【发布时间】:2009-11-17 22:21:47
【问题描述】:
我在 Mono 中使用 C#,并尝试使用 pinvoke 调用 Linux 共享库。
c#调用定义为:
[DllImport("libaiousb")]
extern static ulong AIOUSB_Init();
Linux函数定义如下:
unsigned long AIOUSB_Init() {
return(0);
}
Linux代码的编译命令是:
gcc -ggdb -std=gnu99 -D_GNU_SOURCE -c -Wall -pthread -fPIC
-I/usr/include/libusb-1.0 AIOUSB_Core.c -o AIOUSB_Core.dbg.o
我可以调用该函数,但返回结果很糟糕。它应该是 0,但我得到了一些巨大的错误数字。
我已经在函数值返回之前将printf's放在Linux代码中并且它是正确的。
我注意到有点奇怪的一点是 printf 应该在函数返回之前发生。但是,我看到函数返回到 C#,然后 c# 打印返回结果,最后显示 printf 结果。
【问题讨论】: