在qt应用程序中使用dll

时间:2014-06-19 09:17:17

标签: c++ qt dll

每个人,我是初学者,我仍然有一些令我困惑的事情。

我有一个程序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得到一个对象的指针,但你不能使用它的方法,所以我认为我面对错误的方式。再次感谢您的回答。

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

有两种类型的lib文件,请参阅asnwer:https://stackoverflow.com/a/2375144/2064646

您可以使用.dll而不使用.lib文件,但可以使用GetProcAddress函数。