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

Тема в разделе "MS Visual C++", создана пользователем Guest, 15 дек 2003.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

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

    TEST_API int fnTest()
    {
    return 42;
    }
    В прогу на C# пишу:

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

    kagor Гость

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

    admin Well-Known Member

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

    kagor Гость

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

    EXPORTS
       fnTest
     
  5. Гость

    попробуй в C++ сорце описать fnTest как extern "C"
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей