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を見つけることができます、さもなければ別の例外でしょう。しかし、私のメソッド名はまったく同じです....他の理由は考えられません。