我是.NET平台的新手(来自JVM并具有一些有限的C / C ++经验)并尝试我的第一个托管C ++类库。这是作为我获得的第三方DLL的桥梁,我必须接口。我尝试使用BridJ和Java但到目前为止没有成功,所以我现在正在尝试编写在C#中使用第三方DLL的程序。
第三方DLL是非托管C ++。
我的ManagedBridge.h
到目前为止看起来与此类似:
#pragma once
#include "thirdparty.h"
using namespace System;
namespace ManagedBridge {
class __declspec(dllexport) BridgedThirdPartyThing {
private:
THIRDPARTYNS::ThirdPartyThing* _delegate;
public:
BridgedThirdPartyThing();
~BridgedThirdPartyThing();
void foo();
// more methods
};
}
我的ManagedBridge.cpp
到目前为止看起来像这样:
#include "stdafx.h"
#include "ManagedBridge.h"
namespace ManagedBridge {
BridgedThirdPartyThing::BridgedThirdPartyThing() {
_delegate = new THIRDPARTYNS::ThirdPartyThing();
}
BridgedThirdPartyThing::~BridgedThirdPartyThing() {
delete _delegate;
}
void BridgedThirdPartyThing::foo() {
_delegate -> foo();
}
// similar for the other methods
}
}
现在,当我构建它时,我没有错误,并且创建了ManagedBridge.dll
。
然后我创建了一个C#Console应用程序来测试我的DLL,添加它作为参考,但是我无法访问我用__declspec(dllexport)
导出的类。只有命名空间显示在对象浏览器中。
我错过了什么?
答案 0 :(得分:0)
这是
public ref class BridgedThirdPartyThing
用于C ++ / CLI。您不使用__declspec(dllexport)。请注意,类必须是公共的才能对comsuming程序集可见。