我正在尝试构建一些dll来将某些Computer Vision方法包装在c ++软件中以使用ac#软件,并且我需要从c ++方法中调用某些tbb(线程构建基块)方法来处理某些框架。我正在Visual Studio中使用Charset Unicode在CLR中进行开发,并且一旦我调用tbb标头
#include <tbb/tbb.h>
编译器给我错误:
error C2711: 'tbb::internal::concurrent_vector_base_v3::concurrent_vector_base_v3' try use #pragma unmanaged;
我已经正确导入并链接了库和头文件,以及所需的dll。我在英特尔论坛上寻求了一些帮助,但没有发现任何帮助。
谢谢。
这听起来像您正在尝试使用CLR构建应用程序,但它不喜欢tbb
标头中的某些代码。当尝试以无法管理的托管方式(例如使用内联汇编)编译代码时,会发生Error C2711。
如果您不需要CLR,则应该只能将其禁用(例如,删除/clr
),我应该修复此警告。否则,您可以按照警告中的建议使用#pragma unmanaged
将其禁用-我猜测是在包含#pragma unmanaged
标头之前,例如:
tbb/tbb.h
这应该告诉项目,#pragma managed(push, off)
#include <tbb/tbb.h>
#pragma managed(pop)
中的任何代码(例如,可能使用汇编语言的tbb.h
函数)都不会发出IL。
可能与inline
的一些答案有关,这些答案描述了通常如何与CLR项目中的本机代码接口