我正在尝试学习 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 的调试文件夹中,代码如下:
[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,否则将是另一个例外。但是我的方法名称完全一样......我想不出其他原因。