为什么在编译时无法在链接加载库?我不关心释放图书馆,但它不起作用。
#include <windows.h>
int main()
{
LoadLibrary("winmm.lib");
timeGetTime();
}
答案 0 :(得分:3)
.lib
不是动态链接库(DLL),无法在运行时加载。您需要加载.dll
,或在链接时链接.lib
(此时您不使用LoadLibrary)。
答案 1 :(得分:3)
试试这段代码。它应该可以解决你的问题。
#include <windows.h>
#pragma comment(lib, "winmm.lib")
int main()
{
DWORD time = timeGetTime();
}
答案 2 :(得分:2)
从上面的评论中可以看出,问题是timeGetTime()在编译时需要winmm模块,这意味着你必须与winmm.lib链接。如果要使用运行时链接,则不能通过其名称直接调用该函数;你必须从DLL中获取它的函数指针。
如果您确实想在运行时加载DLL,则必须使用GetProcAddress。有关正确使用LoadLibrary的完整示例代码,请参见MSDN page。
答案 3 :(得分:1)
您正在尝试使用LoadLibrary函数加载.lib文件(链接器库信息),该函数用于加载动态链接库 - 这是完全错误的。 .lib文件在链接时链接在可执行文件中,而.dll文件在运行时加载,可以通过使用LoadLibrary显式加载,也可以通过向链接器提供引用.dll文件的.lib文件。