如何在VS2010中创建混合托管/本机C ++ DLL?

时间:2011-06-08 18:39:52

标签: .net visual-c++ c++-cli interop mixed-mode

我想创建一个具有托管C ++接口的dll,但下面的实际代码是本机C ++。

目前我们正在使用COM(STA)与托管代码进行交互,但现在我们想要使用ThreadPool调用模块,而ThreadPool不允许使用STA线程。我们希望避免为MTA COM重新编码模块。

我之前和其他人都问过这个问题,似乎回答并没有解决基本问题:如何设置项目。我正在使用VS2010,并希望采取措施。我尝试从托管库(C ++类库)开始,添加非托管类,以及MFC DLL(我们使用一些MFC类,但最终要解决它们)并添加托管类。我似乎永远无法编译它。

有人可以幽默我的无知并明确列出从项目类型开始的步骤吗?

1 个答案:

答案 0 :(得分:4)

从C ++ / CLI开始,Visual Studio在编译时不再生成混合模式程序集(如您所述)。 “本机”C ++位被编译为不可验证的CIL。

但是,可以将静态库嵌入到本机编译的程序集中,并且本机库将以未更改的方式合并。也就是说,如果您静态链接到本机静态库,您将生成您正在寻找的混合模式程序集。