Использование dll MinGW, встроенного в проект Visual Studio 2010 C ++ - PullRequest
2 голосов
/ 13 октября 2010

Я создал dll, и теперь я хочу использовать эту dll в проекте Microsoft Visual Studio.

g++ -O0 -Wall -c -fmessage-length=0 -osrc\MyLib.o ..\src\MyLib.cpp
g++ -shared -Wl,--out-implib=MyLib.lib -Wl,--output-def=MyLib.def -oMyLib.dll src\MyLib.o -lwsock32

dll отлично работает, когда я использую его в «проекте gcc».

Я пробовал разные методы для создания файлов ".lib" и ".def" и пытался импортировать эти библиотеки в VS, следуя различным учебным пособиям.Но VS не находит методы, объявленные в dll ...

Я благодарен за любую помощь.

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Вы слышали об искажении имен? Если функции, экспортированные из DLL, не помечены как extern "C", их имена будут искажены для конкретного компилятора. Таким образом, проблема.

1 голос
/ 20 марта 2013

На благо других.Взгляните на MinGW: смешанные компиляторы и бинарные совместимые интерфейсы C ++ Из вышесказанного ясно, что прямого интерфейса C ++ DLL, встроенного в MinGW, с MS Visual Studio нет.Этот интерфейс "работает" чисто только через интерфейс на основе C.

1 голос
/ 13 октября 2010

Если вы хотите, чтобы ваша dll использовалась с другим компилятором, у вас есть следующие опции:

  1. Предоставлять только интерфейс "C" (с внешним "C") - никаких классов или каких-либо специфичных для C ++.
  2. Создание COM-библиотеки.
  3. Создание COM-подобной модели с такими же ограничениями.
...