0

更重要的是,我有一个本机 C++ 应用程序,它可能永远不需要使用托管类型。我希望 CLR 一直处于卸载状态,直到实际上依赖于托管类型的代码路径被实际命中。

我试图使用 Visual Studio 2005 中的 /clr 开关来完成此操作,但据我所知,一旦使用该开关,整个 C++ 应用程序就会成为托管应用程序。有没有办法只为某个编译单元或函数指定它?我试图用#pragma unmanaged 在我的测试应用程序中标记我的main() 函数,但这并没有阻止它在启动时加载CLR。

4

1 回答 1

2

如果您有一个混合模式 C++ DLL,CLR 将在您的 DLL/EXE 加载到进程中后立即加载。没有办法改变这种行为。

实现您正在寻找的最佳方法是将您的 DLL 分成两部分

  1. 纯原生零件
  2. 需要使用托管代码的部分。

您可以通过控制 #2 何时加载到进程中来控制 CLR 何时启动。这需要一些设置工作,但应该会得到您正在寻找的结果。

于 2009-09-14T16:20:03.517 回答