我尝试编写一个简单的函数来从托管代码中调用非托管代码。数据类型是int(这应该使它更简单)。功能就是这个
extern "C" MYTEST_API int myTestFunction(int a, int b)
{
return a*b;
}
托管代码看起来像
[DllImport("myTest.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int myTestFunction(int a, int b);
...
int p1 = 2;
int p2 = 3;
int result = myTestFunction(p1, p2);
Console.WriteLine("C++ int: " + result);
当我运行程序时,结果返回为
C++ int: 12977616
所以,我不知道我如何声明或传递int参数有什么问题。我尝试将参数传递为“单个”,并且该版本有效。
答案 0 :(得分:0)
想想它必须是简单而无关的东西才能解决这个问题...... 即使内容被指定为“始终复制”,C ++ .dll也没有在Visual Studio中更新。因此,它使用int C#参数调用C ++代码的“float”版本。手动刷新东西让它发挥作用。