未定义对“功能”的引用;链接库不起作用

时间:2019-10-28 19:17:48

标签: c++ include

即使已在包含的库中明确定义了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 ++的新手,所以这可能有一个简单的解决方案。

0 个答案:

没有答案