いくつかの WIN32 関連が MinGW を使用してうまく機能しなかったため、MSVC 2010 で小さな静的ライブラリを作成し、後でそれを MinGW とリンクすることにしました。ただし、現在、静的 MSVC ライブラリ (.lib) を MinGW 静的ライブラリ (.a) に変換できるツールを探しています。Web を検索すると、何らかの理由で .dll ファイルを必要とする "lib to a" などのさまざまなツールが見つかりました。
ライブラリは 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 であると偽って (もちろん、VisualStudio ではなく MinGW で 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 で使用するという私の目標を達成する方法について何か考えはありますか? また、最初のエラーの原因は何ですか? 無効な減速は見られません。
ご協力いただきありがとうございます!