Linking together dlls built with different gcc, error : file not recognized: File format not recognized
Linking together dlls built with different gcc, error : file not recognized: File format not recognized
我正在尝试使用 GCC 4.6.1 在 C++0x 中构建一个项目,该项目 link 使用 GCC 11.2.0 生成的 C++17 dll。
我使用的是 Netbeans IDE 7.4(我觉得没关系)。
因此,编译(使用 GCC 4.6.1)输出如下:
libdriver17.dll: file not recognized: File format not recognized
。 libdriver17.dll
确实是我用 GCC 11.2.0 生成的 dll。
我的driverdriver17.h
:
#ifndef DRIVER_H
#define DRIVER_H
#include <stdarg.h>
#ifdef __cplusplus
extern "C" {
#endif
const char* __stdcall init_driver(void);
#ifdef __cplusplus
}
#endif
#endif /* DRIVER_H */
driver17.cpp
:
#include <string>
#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 <iostream>
int main(){
std::cout<<init_driver()<<std::endl;
}
我的 c++0x Makefile
:
g++ -std=c++0x main_cpp0x.cpp -o test -I../dependencies -L../dependencies -ldriver17
dependencies
确实是我的依赖所在...(driver17.h
和 libdriver17.dll
)。
我认为可以 link 将不同的 gcc 构建的 dll 放在一起,但我不知道我做错了什么。
我正在使用 Windows 顺便说一句。
谢谢。
我在 64 位编译 driver17
,在 32 位编译 main_cpp0x.cpp
。
我正在尝试使用 GCC 4.6.1 在 C++0x 中构建一个项目,该项目 link 使用 GCC 11.2.0 生成的 C++17 dll。 我使用的是 Netbeans IDE 7.4(我觉得没关系)。
因此,编译(使用 GCC 4.6.1)输出如下:
libdriver17.dll: file not recognized: File format not recognized
。 libdriver17.dll
确实是我用 GCC 11.2.0 生成的 dll。
我的driverdriver17.h
:
#ifndef DRIVER_H
#define DRIVER_H
#include <stdarg.h>
#ifdef __cplusplus
extern "C" {
#endif
const char* __stdcall init_driver(void);
#ifdef __cplusplus
}
#endif
#endif /* DRIVER_H */
driver17.cpp
:
#include <string>
#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 <iostream>
int main(){
std::cout<<init_driver()<<std::endl;
}
我的 c++0x Makefile
:
g++ -std=c++0x main_cpp0x.cpp -o test -I../dependencies -L../dependencies -ldriver17
dependencies
确实是我的依赖所在...(driver17.h
和 libdriver17.dll
)。
我认为可以 link 将不同的 gcc 构建的 dll 放在一起,但我不知道我做错了什么。
我正在使用 Windows 顺便说一句。
谢谢。
我在 64 位编译 driver17
,在 32 位编译 main_cpp0x.cpp
。