每个人,我是初学者,我仍然有一些令我困惑的事情。
我有一个程序qt,我想包含一个extern库。通常,要包含一个extern库我使用宏:
INCLUDEPATH += "path/to/the/include/headers/file"
LIBS += -L"path/to/where/the/lib/are" \
-llibname // .a for gcc .lib for mscv
然后我可以在我的程序中使用该库。但最后,qt aplication程序使用与lib名称关联的.dll。所以我的问题,为什么我们不能直接使用Qt中的.dll?我不太了解“.lib”和“.dll”之间的区别execpt在运行时使用“.dll”。
我的问题是有一个只包含dll和include头文件的库。有没有办法像这样使用这个库,或者我必须关联.a或.lib?
编辑: 好的,现在,感谢有用的建议,我更好地理解.lib和.dll之间的区别以及如何使用没有.lib且只有标头的dll。但我有一个问题。随着标题,我可以创建对象,编译器不打扰它无法找到对象及其方法,但是当我编译时,我有一些关于“未定义引用方法”的问题。
如果我正确理解,则无法找到引用,因为引用是在.lib中定义的,这就是它无法找到它的原因。所以我的问题是:
如何向编译器说对方法的引用将在运行时而不是在编译时定义?
EDIT2: 好的,显然你可以用一个dll得到一个对象的指针,但你不能使用它的方法,所以我认为我面对错误的方式。再次感谢您的回答。
致以最诚挚的问候,
答案 0 :(得分:1)
有两种类型的lib文件,请参阅asnwer:https://stackoverflow.com/a/2375144/2064646
您可以使用.dll而不使用.lib文件,但可以使用GetProcAddress函数。