更重要的是,我有一个本机C ++应用程序,可能永远不需要使用托管类型。我希望CLR保持卸载状态,直到实际依赖于托管类型的代码路径被实际命中。
我试图使用Visual Studio 2005中的/ clr开关来完成此任务,但据我使用该开关时,我可以告诉整个C ++应用程序成为托管应用程序。有没有办法只为某个编译单元或函数指定它?我尝试使用#pragma unmanaged在我的测试应用程序中标记我的main()函数,但这并没有阻止它在启动时加载CLR。
答案 0 :(得分:2)
如果您有一个混合模式C ++ DLL,只要您的DLL / EXE加载到进程中,CLR就会加载。没有办法改变这种行为。
实现您所需要的最佳方法是将您的DLL分解为两部分
您可以通过控制何时将#2加载到进程中来控制CLR启动的时间。这需要一些设置工作,但应该得到你正在寻找的结果。