Dll на C++ в прогу на С#

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Тупо на Visual C++ 6.0 создаю dll-ку из wizarda
Ничего в ней не меняю, в ней уже лежит ф-я, переменная и класс.
В проге на C++ это выглядит как:
Код:
#define TEST_API __declspec(dllexport)

TEST_API int fnTest()
{
return 42;
}

В прогу на C# пишу:

Код:
[DllImport("D:\\Release\\test.dll",EntryPoint="fnTest")]
public static extern int fnTest();
...ну и далее в коде ее вызываю.
В итоге - dll-ка открывается, но пишет, что "не может найти точку входа fnTest".
Пробовал без EntryPoint - никакой разницы...
 
K

kagor

Guest
А функцию fnTest() указал в файле *.def , в разделе EXPORTS???
 
A

admin

Guest
Видел я похожее на другом форуме
если не получится как kagor советует, то добавь тогда в сорец на C#
[DllImport("test.dll")]
и положи свою test.dll куда-нть рядом с твоей прогой. может с путями при компиляции чего-то не то
и вообще запусти dumpbin /exports test.dll - есть там имя fnTest ?
 
K

kagor

Guest
Проверил твою DLL’ку, все намана работает. Правда подключал я её в VB 6.0, а не в C#. Но факт в том, что DLL’ка работает:). Проект у меня состоит тока из 2-х файлов TestApi.cpp и TestApi.def, код DLL’ки точно такой же, как у тебя, а TestApi.def файл выглядит так:
Код:
LIBRARY      "TestApi"
DESCRIPTION  'TestApi Windows Dynamic Link Library'

EXPORTS
   fnTest
 
G

Guest

попробуй в C++ сорце описать fnTest как extern "C"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!