【发布时间】:2011-08-31 04:46:43
【问题描述】:
我有一个带有简单代码的托管 C++ 程序集。
此程序集包含混合(托管/非托管)代码。如果我将非托管代码放入单独的非托管静态库并将其与托管代码链接,则会收到如下注册错误:“无法加载 'xxxxxx.dll',因为它不是有效的 .NET 程序集” .
如果我将所有代码放到一个项目中并一起构建,那么一切都可以正常工作。我已经在 VS2008 + .NET3.5 + RegAsm .Net2.0 上试过了。我的程序集已签署。
我想为非托管静态库和托管程序集保存我的代码分离。
我需要做什么?
提前致谢。
【问题讨论】:
-
它怎么可能包含“混合代码”?..您是在谈论“不安全代码”吗?那时它仍然被管理..
-
不,他说的是混合模式程序集,请参阅msdn.microsoft.com/en-us/library/x0w2664k.aspx
-
删除了我的答案,因为它是错误的。看看这个相关的 SO question,我认为这会对你有所帮助。 stackoverflow.com/questions/2691325/…
-
这是自动应答 ;-)。我做了一些实验,这里有一些我的问题: 1. 如果你想在托管 C++ 项目中使用带有非托管代码的静态库,那么你需要使用 /clr 选项编译它。 2.注意优化非托管库的代码(有时我在托管项目的发布编译过程中收到类似“...损坏的库映像”的消息)。 3. 如果您想使用纯非托管代码(无需 /clr 编译)和较小的时间和空间开销,请尝试包含非托管代码,如非托管 dll 库(我使用的是 dll 之类的 boost 库)。恕我直言
标签: .net c++ unmanaged managed regasm