使用C ++代码中的DLL中定义的函数

时间:2013-12-12 17:24:13

标签: c++ qt dll g++ mingw32

我从源代码(dll)构建了Qt,并且我正在尝试构建一个使用Qt dll的应用程序。我没有很多C ++经验,所以我遇到了一个非常基本的问题。

我的构建在包含错误的情况下失败了:

Fatal error: QNetworkProxy: No such file or directory

这是我正在使用的g ++命令(我还使用-L将正确的文件夹添加到lib路径,但这也没有用):

g++ -l..\..\wkqt\bin\QtCore4.dll -l..\..\wkqt\bin\QtNetwork4.dll -l..\..\wkqt\bin\QtWebKit4.dll -I..\include -Ishared -Ipdf -Ilib -Iimage -o ..\bin\wkhtmltopdf.exe pdf\*.cc lib\*.cc image\*.cc shared\*.cc

我也在Visual Studio中尝试过(假设它不会构建,但我想看看我是否至少可以从那里正确地包含Qt dll)并且我得到了同样的错误。我用g ++编译的方式有问题吗?如果我正确地与Dll链接,那么从我的代码中使用Qt函数的正确方法是什么?

澄清一点,我不是在寻找如何正确使用Qt。我的问题是:在本地C ++代码中使用任何Dll中定义的函数的正确方法是什么?如果这是一个非常基本的问题我很抱歉,但我无法在Google上找到明确的答案,而且我没有任何C ++经验,也没有使用C ++代码的第三方库。

1 个答案:

答案 0 :(得分:0)

可以通过动态加载DLL并调用它们使用过的函数来使用它们。

调用暴露的函数首先在开始时定义它们的语法 假设函数是语法

BOOL MyFunction(int a,char* pszString)

然后定义语法

#typedef BOOL (WINAPI *PMYFUNCTION)(int a,char* pszString)

然后制作对象

PMYFUNCTION pfnMyFunction;

并通过在loadlibrarycall

之后调用GetProcaddress来获取有效指针
HMODULE hlib= Loadlibrary("c:\\Mylib.dll");
if(hlib)

{    pfnMyFunction = (PMYFUNCTION)Getprocaddress(hlib,"MyFunction"); }

希望这会有所帮助......