我如何使用DLLImport pinvoke来调用我在非托管DLL中的类中编写的函数? 它总是抛出dll中不存在入口点。 EX:
class Foo
{
int __declspec(dllexport) Bar() {return 0;}
};
Bar在Foo类中。 当我使用pinvoke作为:
[DLLImport("Test.dll")]
public static extern int Bar();
使用它时,我得到一个例外,说DLL中不存在入口点。 是否可以直接从类中调用函数?
答案 0 :(得分:1)
简答:
没有
答案很长:
创建C可调用导出(包括实例参数的iow)。
答案 1 :(得分:1)
你将不得不找到受损的名字。你可以使用dumpbin / exports但是'我不确定调用约定是否可以通过pinvoke工作。
答案 2 :(得分:1)
不容易......
要调用成员函数,第一个“hidden”参数必须是指向您正在调用的成员函数的C ++类的指针。
C ++函数是名称管理的,因此您需要找到您正在调用的函数的名称管理名称。
简而言之:创建C ++类的C ++ / CLI包装器更容易实现此目的。