Подтвердить что ты не робот

Использование libs/dlls, скомпилированных в Linux/MinGW в Visual Studio

Обновление: я получаю это предупреждение при компиляции: несколько разделов '.text', найденных с различными атрибутами

Привет,

Я скомпилировал некоторые библиотеки (.a и .dll) в Linux с помощью кросс-компилятора MinGW. Я могу успешно связать их (.a) в Visual Studio 2008. Однако, когда он запускается (с использованием .dll), он заканчивается указателем адреса, указывающим на пустые адреса памяти.

Есть ли способ/список вещей, которые нужно сделать, это позволит мне успешно использовать эти библиотеки в VC08?

Перекрестный компилятор генерирует

  • *. Dll.a
  • * дллы.

Спасибо

4b9b3361

Ответ 1

Нашел.

http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

У вас должен быть файл def и использовать инструмент VC lib для создания библиотеки импорта.

Ответ 2

Мне кажется, что обе стороны не используют одно и то же соглашение о вызове, то есть проблема в том, как были определены экспортированные функции dll.

Напротив, самым простым подходом было бы определение функций как extern "C" путем определения экспортируемых функций следующим образом:

extern "C"
{
  int  MyExportedFunction(char *buffer, int length);
  void MyOtherFunction();
};