Я пытаюсь изучить P/Invoke, поэтому я создал простую dll на C++
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);
}
Но это дает мне исключение:
Невозможно найти точку входа с именем «GiveMeNumber» в DLL 'KingFuncDll.dll'.
В самом деле.... что я сделал не так... Он явно смог найти DLL, иначе было бы другое исключение. Но имя моего метода точно такое же... Я не могу придумать другой причины.