Связывание библиотек DLL, построенных с использованием разных gcc, ошибка : файл не распознан: Формат файла не распознан

#c #gcc #compiler-errors #compilation

#c #gcc #ошибки компилятора #Сборник

Вопрос:

Я пытаюсь создать с помощью GCC 4.6.1 проект на C 0x, который связан с библиотекой dll C 17, созданной с помощью GCC 11.2.0. Я использую IDE Netbeans 7.4 (я думаю, что это не имеет значения).

Итак, результат компиляции (с GCC 4.6.1) выглядит следующим образом: libdriver17.dll: file not recognized: File format not recognized . libdriver17.dll действительно ли моя библиотека dll создана с помощью GCC 11.2.0.

Мой водитель driver17.h :

 #ifndef DRIVER_H #define DRIVER_H  #include lt;stdarg.hgt;  #ifdef __cplusplus extern "C" { #endif  const char* __stdcall init_driver(void); #ifdef __cplusplus } #endif  #endif /* DRIVER_H */  

driver17.cpp :

 #include lt;stringgt; #include "driver17.h"  std::string my_str;  const char* init_driver(){  int x = 45;  my_str = std::to_string(x);  return my_str.c_str(); }  

main_cpp0x.cpp :

 #include "../dependencies/driver17.h" #include lt;iostreamgt;  int main(){  std::coutlt;lt;init_driver()lt;lt;std::endl; }  

мой c 0x Makefile :

 g   -std=c  0x main_cpp0x.cpp -o test -I../dependencies -L../dependencies -ldriver17  

dependencies это действительно то, где находятся мои зависимости… ( driver17.h и libdriver17.dll ).

Я думаю, что можно связать воедино различные библиотеки DLL, созданные gcc, но я понятия не имею, что я делаю неправильно.

Кстати, я использую Windows.

Спасибо.

Ответ №1:

Я компилировал driver17 в 64 битах и main_cpp0x.cpp в 32 битах.