【问题标题】:Using a static MSVC 2010 libary (.lib) with MinGW?将静态 MSVC 2010 库 (.lib) 与 MinGW 一起使用?
【发布时间】:2012-07-09 10:53:59
【问题描述】:

由于一些与 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,(当然,使用带有 MinGW 而不是 VisualStudio 的 Netbeans)导致了这个错误:

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 一起使用的目标有任何想法吗?另外,什么可能导致第一个错误?我看不到任何无效的减速。

感谢您的帮助!

【问题讨论】:

  • 您的第一个错误是编译器错误:_int64 应该是 __int64。第二个确实是链接器错误。您使用什么命令 (gcc ....) 进行链接?哪些与 Win32 相关的东西不适用于 MinGW?

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


【解决方案1】:

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

【讨论】:

  • 是的,你可以,你只需要小心链接到正确的 msvcr*.dll。
猜你喜欢
  • 2011-06-08
  • 2021-11-25
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
相关资源
最近更新 更多