Sto cercando di imparare P/Invoke, così ho creato un semplice DLL in C++Impossibile trovare un punto di ingresso al momento della chiamata C++ DLL in 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;
}
}
quindi non compilare, poi ho copiato questo dll nella mia cartella di debug del WPF, con il codice:
[DllImport("KingFuncDll.dll", EntryPoint = "GiveMeNumber", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern int GiveMeNumber(
int i
);
e chiamandolo a scatto del tasto:
private void Button_Click(object sender, RoutedEventArgs e)
{
int num = GiveMeNumber(123);
}
ma mi dà eccezione:
Impossibile trovare un punto di ingresso denominato 'GiveMeNumber' nella DLL 'KingFuncDll.dll'.
Davvero .... cosa ho fatto di sbagliato ... Ovviamente è in grado di trovare la DLL, altrimenti sarebbe un'altra eccezione. Ma il mio nome del metodo è esattamente lo stesso ... Non riesco a pensare ad altro motivo.
Si prega di vedere la mia domanda qui: http://stackoverflow.com/questions/9849541/writing-c-intestato-per-essere-called-da-c –
Ho risolto la stessa domanda e la descrivo in [questo post] (https://stackoverflow.com/a/45263176/1817569). – Hamid