C ++ DLL调用从C#在Windows CE的ARM始终返回0
-
21-08-2019 - |
题
我目前正在开发用于TI OMAP处理器,这是ARM处理器在Windows CE的应用程序。我想简单地调用从C#中的C ++ DLL文件中的函数,我总是得到0值回来了,不管我用的数据类型。这是最有可能的某种调用约定不匹配?我编译DLL和从相同的Visual Studio解决方案的主要EXE。
C#代码段:
public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
byte test = LibWrap.test_return();
MessageBox.Show(test.ToString());
}
}
public class LibWrap
{
[DllImport("Test_CE.dll")]
public static extern byte test_return();
}
C ++ DLL代码段:
extern "C" __declspec (dllexport) unsigned char test_return() {
return 95;
}
解决方案
它工作时,我改变:
extern "C" __declspec (dllexport) unsigned char test_return() {
return 95;
}
到
extern "C" __declspec (dllexport) unsigned char __cdecl test_return() {
return 95;
}
在该DLL的代码。为什么编译WinCE的,当它不认为这是超越我。
其他提示
尝试导出test_return()如下:
unsigned char __declspec(dllexport) WINAPI test_return() {
return 95;
}
某处WINAPI被定义为 __stdcall它应该已经__cdecl
没有。 WINAPI被定义为__stdcall。
不隶属于 StackOverflow