从C#调用C dll中的函数,该函数将某种类型的指针返回到函数指针

特奥多尔·奥尔森

我有一个用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 */
}
塞尔格

simModelFunctions函数返回指向simModel结构(数据类型)的指针

您显示的代码通过动态查找其地址来调用该函数,这就是它具有函数指针的原因。该指针不是来自函数本身。

在C#中,您可以简单地使用model.dll中的DllImport进行声明。例如

[DllImport("model.dll", CallingConvention = CallingConvention.Cdecl, ExactSpelling = true)]
private static IntPtr simModelFunctions();

然后,Marshal.PtrToStructure如果需要检查结构的内容,或者仅将返回的值传递IntPtr给其他函数而无需打扰内部函数,则可以使用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将返回指针从C ++ dll函数返回到C#

来自分类Dev

C语言如何将指针从函数返回到指针

来自分类Dev

如何创建通用函数,该函数将返回c ++中任何级别的指针的值?

来自分类Dev

将int array []或指向int array []的指针返回到C中的调用例程的函数

来自分类Dev

通过函数指针在C#中调用C函数

来自分类Dev

通过函数指针在C#中调用C函数

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将数组地址从函数返回到指针(C ++)

来自分类Dev

将C ++函数包装在返回指针的c#中

来自分类Dev

在C#中调用此C函数的正确语法是什么?该函数使用指针和数组

来自分类Dev

在C ++中返回指针的函数

来自分类Dev

Fortran接口调用C函数,该函数返回指向数组的指针

来自分类Dev

如何访问C ++函数,该函数将指针作为来自C#的输入参数

来自分类Dev

如何将C函数签名转换为C#并在本机DLL中调用该函数?

来自分类Dev

调用函数并将输出返回到C#中的外部DLL

来自分类Dev

函数指针类型的c ++模板调用

来自分类Dev

如何使用inline-c来包装将指针返回到自定义结构类型的函数?

来自分类Dev

调用从 cython 返回指针的 C 函数

来自分类Dev

调用函数C#

来自分类Dev

函数返回指向C中数组类型的指针

来自分类Dev

C中的函数没有返回正确的指针类型?

来自分类Dev

函数调用中的指针类型不兼容-C

来自分类Dev

Python 在传感器的 DLL 中调用 SDK 函数,该函数采用指针 IP 和端口并返回 void*(void* 配置文件传感器的句柄。)

来自分类Dev

如何从C#调用C ++ DLL函数

来自分类Dev

C#在SQL Server中调用用户定义的标量函数,该函数将表类型作为其参数

来自分类Dev

C ++中的函数指针

来自分类Dev

函数指针分配并在C ++中调用?

来自分类Dev

从Javascript调用C ++函数指针

来自分类Dev

调用成员指针函数C ++

Related 相关文章

  1. 1

    如何将返回指针从C ++ dll函数返回到C#

  2. 2

    C语言如何将指针从函数返回到指针

  3. 3

    如何创建通用函数,该函数将返回c ++中任何级别的指针的值?

  4. 4

    将int array []或指向int array []的指针返回到C中的调用例程的函数

  5. 5

    通过函数指针在C#中调用C函数

  6. 6

    通过函数指针在C#中调用C函数

  7. 7

    将数组地址从函数返回到指针(C ++)

  8. 8

    将数组地址从函数返回到指针(C ++)

  9. 9

    将C ++函数包装在返回指针的c#中

  10. 10

    在C#中调用此C函数的正确语法是什么?该函数使用指针和数组

  11. 11

    在C ++中返回指针的函数

  12. 12

    Fortran接口调用C函数,该函数返回指向数组的指针

  13. 13

    如何访问C ++函数,该函数将指针作为来自C#的输入参数

  14. 14

    如何将C函数签名转换为C#并在本机DLL中调用该函数?

  15. 15

    调用函数并将输出返回到C#中的外部DLL

  16. 16

    函数指针类型的c ++模板调用

  17. 17

    如何使用inline-c来包装将指针返回到自定义结构类型的函数?

  18. 18

    调用从 cython 返回指针的 C 函数

  19. 19

    调用函数C#

  20. 20

    函数返回指向C中数组类型的指针

  21. 21

    C中的函数没有返回正确的指针类型?

  22. 22

    函数调用中的指针类型不兼容-C

  23. 23

    Python 在传感器的 DLL 中调用 SDK 函数,该函数采用指针 IP 和端口并返回 void*(void* 配置文件传感器的句柄。)

  24. 24

    如何从C#调用C ++ DLL函数

  25. 25

    C#在SQL Server中调用用户定义的标量函数,该函数将表类型作为其参数

  26. 26

    C ++中的函数指针

  27. 27

    函数指针分配并在C ++中调用?

  28. 28

    从Javascript调用C ++函数指针

  29. 29

    调用成员指针函数C ++

热门标签

归档