我有c ++ dll,我正在转换为c ++ / cli。 设置/ clr编译器选项后,我的项目构建正常。 但是,当我尝试通过引用c#项目中的dll引用本机方法时,c#项目无法找到它。 不设置/ clr构建MSIL的所有源代码,这些代码应该从其他.net程序集中可见吗? 为什么我必须创建一个c ++ / cli包装类来使本地代码对c#代码可见?
我不清楚c ++ / cli是如何工作的......
答案 0 :(得分:5)
/clr
不会使您的本机类对托管代码可见,也不会将所有内容编译为托管代码。它只是允许您将托管代码添加到C ++项目中。这是通过C ++ / CLI语言扩展来完成的(即:制作ref class
而不是标准class
。)
/clr:pure
标志 将所有内容编译为托管代码(无本机),但需要对源代码进行重大更改才能进行编译。