大家,我是一个初学者,但我还有一些令人困惑的地方。
我有一个程序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复制程序使用与库名关联的.dll。所以我的问题是,为什么我们不能在Qt中直接使用.dll?我不太了解“ .lib”和“ .dll”执行程序之间的区别,“。dll”在运行时使用。
我的问题是有一个仅包含dll和include标头文件的库。有没有办法像这样使用这个库,或者我必须关联.a或.lib?
编辑:好的,现在,由于有用的建议,我更好地了解了.lib和.dll之间的区别,以及如何使用不带.lib且仅包含标头的dll。但是我有一个问题。使用标头,我可以创建对象,编译器不必为找不到对象及其方法而烦恼,但是当我进行编译时,我遇到了一些有关“对方法的未定义引用”的问题。
如果我正确理解,则找不到该引用,因为该引用是在.lib中定义的,这就是为什么找不到该引用的原因。所以我的问题是:
我如何对编译器说,将在运行时而不是在编译时定义对方法的引用?
EDIT2:好的,显然可以使用dll获取对象的指针,但不能使用其方法,所以我认为我面临的是错误的方式。再次感谢您的回答。
最好的祝福,
有2种类型的lib文件,请参见以下列表:https ://stackoverflow.com/a/2375144/2064646
您可以使用不带.lib文件的.dll,而是通过GetProcAddress函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句