C++ 在qt应用程序中使用dll

C++ 在qt应用程序中使用dll,c++,qt,dll,C++,Qt,Dll,各位,我是一个初学者,我仍然有一些事情我感到困惑 我有一个程序qt,我想包括一个外部库。通常,要包含外部库,我使用宏: INCLUDEPATH += "path/to/the/include/headers/file" LIBS += -L"path/to/where/the/lib/are" \ -llibname // .a for gcc .lib for mscv 然后我可以在我的程序中使用这个库。但在最后,qt应用程序使用与库名关联的.dll。所以我的问题是,为什

各位,我是一个初学者,我仍然有一些事情我感到困惑

我有一个程序qt,我想包括一个外部库。通常,要包含外部库,我使用宏:

INCLUDEPATH += "path/to/the/include/headers/file"
LIBS += -L"path/to/where/the/lib/are" \
        -llibname   // .a for gcc .lib for mscv
然后我可以在我的程序中使用这个库。但在最后,qt应用程序使用与库名关联的.dll。所以我的问题是,为什么我们不能直接在Qt中使用.dll呢?我不太清楚在运行时使用“.lib”和“.dll”execpt a“.dll”之间的区别

我的问题是有一个只有dll和包含头文件的库。有没有办法像这样使用这个库,或者我必须关联.a或.lib

编辑: 好了,多亏了这些有用的建议,我更好地理解了.lib和.dll之间的区别,以及如何在没有.lib的情况下使用只有头的dll。但我有个问题。通过头部,我可以创建对象,编译器不必担心它找不到对象及其方法,但是当我编译时,我遇到了一些关于“未定义对方法的引用”的问题

如果我理解正确,则无法找到该引用,因为该引用是在.lib中定义的,这就是它无法找到它的原因。因此,我的问题是:

我怎样才能告诉编译器,对方法的引用将在运行时定义,而不是在编译时定义

EDIT2: 很明显,你可以用dll得到一个对象的指针,但是你不能使用它的方法,所以我认为我面对的是错误的方向。再次感谢你的回答


敬请注意,

有两种类型的lib文件,请参见此asnwer:


您可以使用一个没有.lib文件的.dll,但是通过函数。

请参阅,谢谢,我现在看到一个更好的文件,我想我会在程序中使用QLibrary类。