增强互斥C ++ / CLI问题
|
我正在使用Visual Studio 2008 C#for 64bit开发程序,并且我想使用一个使用boost的库。所以我用C ++ / CLI写了一个包装器。我设法解决了我遇到的错误
#include <boost/thread/mutex.hpp>.
如果我在C ++ / CLI包装器中包含任何本身包含ѭ1的文件,或者如果我直接将其包含在包装器中,则会得到\“ System.AccessViolationException \” \“试图读取或写入受保护的内存。这通常是一种指示其他内存已损坏。\“
在为64位构建所有组件时,我非常谨慎,因此我怀疑问题是否存在。当我在\“ plain \” C ++中以64位使用同一库时,一切正常。我看过几篇文章,那里的人似乎对boost线程也有类似的问题,但是我发现这些解决方案都没有用。有人有主意吗?
没有找到相关结果
已邀请:
3 个回复
厢界山攀
)也应该可行,但是我没有尝试过。 如果这样不起作用,请尝试使用Google搜寻
的某种组合;您应该在boost邮件列表中找到很多关于它的帖子,因为这是一个老问题。 编辑:正如Raman Sharma(微软高级副总裁)在这里评论的那样,/ clr甚至不支持
,因此boost.thread的互斥量实现也不是真的不足为奇。
青董据零
戒黑恳农
Program.cs-C#客户端代码加载\'testcli \'
上面的代码通过引发System.BadImageFormatException(可以在应用程序事件查看器中找到该异常)返回。 如果更改了testcli,以便现在可以动态链接Boost线程库: testcli.h-C ++ CLI程序集成功代码
现在,代码成功返回。 请注意,您可以按以下说明定义BOOST_THREAD_DYN_LINK而不是BOOST_ALL_DYN_LINK:http://www.boost.org/doc/libs/1_64_0/doc/html/thread/build.html 这样做,您不必将所有Boost动态库与您的应用程序打包在一起。