为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

跃然一笑 2019-07-17 18:05:11
C+/CLI混合模式DLL的创建我有一个本机C+DLL,我想要一个C+/CLI包装层。据我所知,如果您简单地向项目中添加了一个C+/CLI类,VS将以混合模式编译,但我显然错了,因为VS似乎没有触及托管代码。所以,给定一个预先存在的本机代码基一点儿没错,一步地创建混合模式DLL,这样我就可以从任何.NET语言链接到该代码了吗?*我需要这样做,因为我的本机代码使用了我无法调用的C+类。
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

不,在告诉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(); 
    }};


查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 551 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信