我正在尝试学习P/Invoke,因此我创建了一个简单的C ++ dll
KingFucs.h:
namespace KingFuncs
{
class KingFuncs
{
public:
static __declspec(dllexport) int GiveMeNumber(int i);
};
}
KingFuns.cpp:
#include "KingFuncs.h"
#include <stdexcept>
using namespace std;
namespace KingFuncs
{
int KingFuncs::GiveMeNumber(int i)
{
return i;
}
}
所以它确实可以编译,然后我将这个dll复制到我的WPF的debug文件夹中,带有下面的代码:
[DllImport("KingFuncDll.dll", EntryPoint = "GiveMeNumber", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern int GiveMeNumber(
int i
);
并在按钮点击时调用它:
private void Button_Click(object sender, RoutedEventArgs e)
{
int num = GiveMeNumber(123);
}
但它给了我一个异常:
无法在'DLL KingFuncDll.dll'中找到名为'GiveMeNumber'的入口点。
真的....我做错了什么...它显然能够找到DLL,否则会出现另一个异常。 但我的方法名称完全相同....我想不出其他原因。