【发布时间】:2011-03-01 01:19:00
【问题描述】:
我正在调用 LoadTypeLib 以在 C++/CLI 中加载非托管类型库。我需要将一些代码区域编译为托管,将一些代码区域编译为非托管(本机),并形成一个混合模式类库作为可执行文件。
我需要托管和非托管(本机)的哪一部分分别编译为托管和本机?
【问题讨论】:
标签: interop c++-cli mixed-mode
我正在调用 LoadTypeLib 以在 C++/CLI 中加载非托管类型库。我需要将一些代码区域编译为托管,将一些代码区域编译为非托管(本机),并形成一个混合模式类库作为可执行文件。
我需要托管和非托管(本机)的哪一部分分别编译为托管和本机?
【问题讨论】:
标签: interop c++-cli mixed-mode
更喜欢使用#pragma managed 和push 和on/off,然后pop,#pragma unmanaged 实际上没什么用。
【讨论】:
不要使用 #pragma managed - 它被认为是“邪恶的”,可能会导致 DLL 初始化/关闭出现问题。
我建议将一些文件显式编译为托管文件 (/clr),而将一些文件编译为本机文件(没有 /clr)。您还可以有两个预编译的标头 - 一个用于托管,一个用于本机。
【讨论】: