Int值不在托管代码和非托管代码之间正确编组

问题描述 投票:1回答:1

我试图编写一个简单的函数来从托管代码调用非托管代码。数据类型是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参数有什么问题。我尝试将参数传递为“Single”并且该版本有效。

.net interop
1个回答
0
投票

认为它必须是简单而无关的解决方法...即使内容被指定为“始终复制”,C ++ .dll也没有在Visual Studio中更新。因此,它使用int C#参数调用C ++代码的“float”版本。手动刷新东西让它发挥作用。

© www.soinside.com 2019 - 2024. All rights reserved.