EntryPointNotFoundException загрузка C DLL в VB.net - PullRequest
3 голосов
/ 02 августа 2011

Я часами пытался заставить этот простой контрольный пример работать и искать в Интернете подсказки.

У меня есть решение VS 10, содержащее мой проект VB.net и проект DLL VC ++.

В моем проекте DLL у меня есть:

json_main.cpp:

#include <Windows.h>

extern "C"
{
    void testMethod(int* inVal )
    {
        *inVal += 5;
    }
}

JSON.def:

LIBRARY JSON
    DESCRIPTION 'Simple JSON encoder/decoder'
    EXPORTS
        testMethod

И мой код VB.net:

<DllImport("C:/inetpub/wwwroot/facebook/AlumniFinder/Debug/JSON.dll", CallingConvention:=CallingConvention.Cdecl)> _
Private Shared Sub testMethod(ByRef inVal As Integer)

End Sub
...

Dim var As Integer = 7
testMethod(var)
oLabel.Text = var.ToString

Тем не менее, когда я пытаюсь запустить, я получаю EntryPointNotFoundException.

Кто-нибудь знает, что я тут не так делаю?Я пытался использовать dumpbin.exe в моей DLL, но я не получаю никаких имен функций для определения схемы искажения, которую он использует

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Используйте dumpbin /exports или Dependency Walker, чтобы проверить, что вы экспортируете функцию, поскольку может показаться, что это не так.

Я предполагаю, что вы не настроили сборку для передачи файла .defкомпоновщику.Сделайте это, как на этом скриншоте:

enter image description here

0 голосов
/ 03 августа 2011

Попробуйте это (без пути и с External):

<DllImport("JSON.dll", CallingConvention:=CallingConvention.Cdecl)> _
Private Shared External Sub testMethod(ByRef inVal As Integer)

И убедитесь, что JSON.dll находится в выходном каталоге (откуда запускается программа).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...