我正在编写一个C++/CLI应用程序,但我希望我的C++ DLL中的大多数代码都是本机运行的(即不管理).
我在模块中只有一个CLI类,其他文件都是本机C++.
那么,确保这些本地类运行的最佳方法是什么......嗯,本机?
我是不是该:
谢谢
Ben*_*igt 15
我这样做的通常方法是将本机代码放入一个没有.NET支持的静态库项目中(没有编译/clr).您可以关闭/clrC++/CLI项目中的单个文件,但是预编译的头文件确实很混乱.使用单独的库项目,可以很容易地为本机代码创建本机pch,为托管代码创建托管pch.
然后我将我的C++/CLI代码与本机C++ .lib链接以创建DLL.您所做的只是设置项目依赖项,Visual Studio负责其余的工作.
您也可以使用#pragma managed(push, off)和#pragma managed(pop)如果你绝对要结合本土并且在同一编译单元托管代码.但通常头文件中的任何代码都存在,因为您打算将其内联...这意味着当它包含在托管CU中时应该处于托管模式,因此可以将其内联到托管函数中.
尽管他的评论恶化了这个答案,汉斯已经开始推荐我的方法了.
Han*_*ant 14
你不必跳过篮球来确保这一点.编译器只有在打开/ clr选项编译程序时才会发出IL.它看起来像项目选项,但事实并非如此.
只需选择包含本机代码的.cpp文件即可.通过按住Ctrl键并单击资源管理器窗口中的文件,选择多个选项.右键单击+属性,C/C++,常规.将"公共语言运行时支持"设置更改为"否...".