我从源代码(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 ++代码的第三方库。
答案 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"); }
希望这会有所帮助......