日期:2014-05-18  浏览次数:20822 次

最近遇到一个奇怪的vc的dll,如何在c#中调用呢
是一个第三方的dll, 他暴露一个抽象类(纯虚的)。

类似如下:
class __declspec(dllexport) CTestAPI
{
public:
static CTestAPI *CreateTestApi(const char *pszPath = "", const bool bTest=false);
virtual void Release() = 0;
protected:
~CTestAPI(){};
}


然后傻掉了,这个怎么被c#引用啊?


------解决方案--------------------
http://wenku.baidu.com/view/feda948002d276a200292eef.html
------解决方案--------------------
是 C++.net 开发的不?如果是直接添加引用,如果不是请查PInvoke相关资料。
------解决方案--------------------
http://blogs.msdn.com/b/vcblog/archive/2008/12/08/inheriting-from-a-native-c-class-in-c.aspx
------解决方案--------------------
C#好像不能调用C++的class
------解决方案--------------------
使用 __thiscall 导入函数,把 this 当作第一个参数。
和导入函数一致。

同时,自己定义一个虚函数结构。

不过,我建议你最好写一个 托管的 C++ DLL 来引用这个。
那样,你的程序直接调用你自己的托管 DLL 就可以了。
------解决方案--------------------
处理好双重接口的问题,几乎可以不计。