从使用tbb的c ++项目生成错误的dll

问题描述 投票:0回答:1

我正在尝试构建一些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。我在英特尔论坛上寻求了一些帮助,但没有发现任何帮助。

谢谢。

c++ visual-c++ clr intel tbb
1个回答
2
投票

这听起来像您正在尝试使用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项目中的本机代码接口

© www.soinside.com 2019 - 2024. All rights reserved.