2011-05-23 333 views
2

我有一些托管C++程序集与简单的代码。C++托管和非托管静态库

该程序集混合了(托管/非托管)代码。如果我将非托管代码放到单独的非托管静态库并将其与托管代码链接,那么我得到的注册错误如下:“无法加载'xxxxxx.dll',因为它不是有效的.NET程序集”。

如果我把所有的代码放到一个项目中并且一起构建,那么所有代码​​都可以正常工作。我曾在VS2008 + .NET3.5 + RegAsm .Net2.0上试过它。我的大会已签署。

我想为非托管静态库和托管程序集保存我的代码分离。

我需要做什么?

在此先感谢。

+0

它有可能包含“混合代码”?您是否在谈论“不安全代码”?它仍然是托管然后.. – vines 2011-05-23 14:41:20

+0

不,他是在谈论混合模式大会见http://msdn.microsoft.com/en-us/library/x0w2664k.aspx – Yaur 2011-05-23 15:00:00

+0

删除我的答案,因为它是错的。看看这个相关的SO问题,我认为它会帮助你。 http://stackoverflow.com/questions/2691325/c-cli-mixed-mode-dll-creation – Yaur 2011-05-23 15:08:59

回答

1

您的库必须构建为动态使用C++运行时(从.NET 2.0开始)。

在项目属性中,打开C/C++,然后转到代码生成。查找运行时库,并设置为多线程DLL进行发布,并设置多线程调试DLL进行调试。