C+/CLI混合模式DLL的创建

C+/CLI混合模式DLL的创建

我有一个本机C+DLL,我想要一个C+/CLI包装层。据我所知,如果您简单地向项目中添加了一个C+/CLI类,VS将以混合模式编译,但我显然错了,因为VS似乎没有触及托管代码。

所以,给定一个预先存在的本机代码基一点儿没错,一步地创建混合模式DLL,这样我就可以从任何.NET语言链接到该代码了吗?

*我需要这样做,因为我的本机代码使用了我无法调用的C+类。


跃然一笑
浏览 559回答 3
3回答

拉莫斯之舞

不,在告诉C+/CLI编译器您的遗留DLL是用非托管代码编写之前,它不会采用混合模式。这应该是值得注意的,您应该从非托管DLL导出中获得链接器错误。您需要使用#语用管理:#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();      }};
打开App,查看更多内容
随时随地看视频慕课网APP