【发布时间】:2014-03-17 09:29:09
【问题描述】:
我有一个用 C 语言编写的 dll(无法访问源代码),我希望从 C# 调用它。如果 dll 使用简单类型,我会知道如何通过 PInvoke 处理它,但它不会:(
我试图调用的 dll 中的函数没有参数,所以问题是如何处理返回。我有一些示例 C 代码调用我喜欢在 C# 中重新创建的函数。据我了解,返回类型是指向函数指针的指针,这是正确的吗?该函数的返回值也应稍后传递回 dll 中的其他函数。
非常感谢任何帮助:)
/* C code */
typedef const struct simModel* (*ModelFunc)(void);
int ret=0;
HINSTANCE hInst = 0;
ModelFunc f=0;
const struct simModel*model =0;
if (!(hInst=LoadLibrary("model.dll"))) {
return 1;
}
if (!(f=(ModelFunc)GetProcAddress(hInst,"simModelFunctions"))) {
ret=1;
} else if (!(model=f())) {
ret=1;
} else {
/* Do stuff */
}
【问题讨论】: