Не удалось найти точку входа при вызове C++ dll в C#

Я пытаюсь изучить 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, иначе было бы другое исключение. Но имя моего метода точно такое же... Я не могу придумать другой причины.

16
задан King Chan 11 April 2012 в 15:58
поделиться