在MinGW中使用静态MSVC 2010库(.lib)?

时间:2012-07-10 00:53:38

标签: mingw static-libraries visual-studio-2010 .a .lib

由于一些与WIN32相关的东西在使用MinGW时效果不佳,我决定用MSVC 2010创建一个小型静态库,然后将其与MinGW链接。但是,我目前正在寻找一种工具,允许我将静态MSVC库(.lib)转换为MinGW静态库(.a)。在网上搜索,我找到了各种工具,例如“lib to a”,由于某种原因需要.dll文件,所以我认为这不是我想要的。

库是用C语言编译的,使用MSVC可以很好地工作。 这是头文件:

#ifndef _GWSI_H
#define _GWSI_H

#include <Windows.h>

#define GWSI_HEIGHT             0x0001
#define GWSI_WIDTH              0x0002

#define GWSI_OSVI_MAJOR         0x0010
#define GWSI_OSVI_MINOR         0x0011
#define GWSI_OSVI_BUILD         0x0012

#ifdef __cplusplus
extern "C" {
#endif

float GWSI_getCpuSpeed();
int GWSI_getOSV(unsigned int flag);
int GWSI_getScreenResolution(unsigned int flag);
unsigned _int64 GWSI_getTotalSystemMemory();

#ifdef __cplusplus
}
#endif



#endif /*_GWSI_H*/

尝试简单地尝试链接.lib,假装它是一个.a,(当然使用Netbeans with MinGW而不是VisualStudio)导致了这个错误:

GWSI.h:26:17: error: expected initializer before GWSI.h:26:17: error: expected initializer before 'GWSI_getTotalSystemMemory'

删除'GWSI_getTotalSystemMemory();'后原型我得到了这个错误,我认为这意味着该库没有链接开头:

main.o:main.cpp:(.text+0xf): undefined reference to `GWSI_getCpuSpeed'

您对如何实现我的目标有任何想法,将此静态库与MinGW一起使用?还有什么可能导致第一个错误?我看不到任何无效的减速。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我相信您无法将在MSVC中编译的库链接到您的MinGW代码。