【发布时间】:2015-08-24 10:41:17
【问题描述】:
我对 .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# 控制台应用程序来测试我的 DLL,将其添加为参考,但我无法访问使用 __declspec(dllexport) 导出的类。对象浏览器中仅显示命名空间。
我错过了什么?
【问题讨论】:
标签: c# c++ visual-c++ dll