Ada*_*ile 14 .net mixed-mode interop c++-cli
我有一个本机C++ DLL,我希望有一个C++/CLI包装层.根据我的理解,如果你简单地将C++/CLI类添加到项目中,VS将编译为混合模式,但我显然是错误的,因为VS似乎甚至没有触及托管代码.
所以,对于一个已经存在的本地代码库什么究竟,一步一步的,你需要做的,创建一个混合模式DLL,这样我可以从任何.NET语言链接到该代码?
*我需要这样做,因为我的本机代码使用我无法P/Invoke进入的C++类.
Han*_*ant 18
好吧,不,它告诉C++/CLI编译器你的遗留DLL是用非托管代码编写的,它不会成为混合模式.哪个应该引人注意,你应该从非托管DLL导出中获得链接器错误.您需要使用#pragma managed:
#pragma managed(push, off)
#include "oldskool.h"
#pragma comment(lib, "oldskool.lib")
#pragma managed(pop)
using namespace System;
public ref class Wrapper {
private:
COldSkool* pUnmanaged;
public:
Wrapper() { pUnmanaged = new COldSkool; }
~Wrapper() { delete pUnmanaged; pUnmanaged = 0; }
!Wrapper() { delete pUnmanaged; }
void sampleMethod() {
if (!pUnmanaged) throw gcnew ObjectDisposedException("Wrapper");
pUnmanaged->sampleMethod();
}
};
Run Code Online (Sandbox Code Playgroud)