即使已在包含的库中明确定义了g ++,也找不到特定的函数定义。
main.cpp
#include <StormLib.h>
int main()
{
HANDLE hMpq = NULL;
SFileOpenArchive("file_name", 0, MPQ_OPEN_READ_ONLY, &hMpq);
return 0;
}
StormLib.h
// ...
bool WINAPI SFileOpenArchive(const TCHAR * szMpqName, DWORD dwPriority, DWORD dwFlags, HANDLE * phMpq);
// ...
编译
$ g++ main.cpp
/usr/bin/ld: /tmp/ccNSvuaq.o: in function `main':
main.cpp:(.text+0x4b): undefined reference to `SFileOpenArchive'
collect2: error: ld returned 1 exit status
如您所见,SFileOpenArchive()
已在StormLib.h
中明确定义,并且头文件是由g ++找到的,但仍显示未定义SFileOpenArchive()
。
这似乎是StackOverflow上的一个常见问题,大多数解决方案告诉我将库包含在compile命令中。这是我尝试过的:
$ g++ main.cpp /usr/local/include/StormLib.h
$ g++ -o test main.cpp /usr/local/include/StormLib.h
两个命令都给出与第一个相同的错误。
与答案最相似的问题是this one with over 1400 votes,但不能解决我的问题。
我是C ++的新手,所以这可能有一个简单的解决方案。