从Qt app(win32)调用外部C库中的函数

时间:2009-06-30 03:16:12

标签: c++ c qt

这可能是一个特定的Qt,但在这里我们去......

我有一个Qt应用程序,我需要与几个用C编写的外部库接口。一切似乎都在工作,因为我可以正确链接,但是当我尝试调用其中一个库中的任何函数时我总是遇到访问冲突错误。对于其他库,我在我的过程中调用了10个函数,但是第11个函数给了我同样的东西。我会在这里给出第一个细节,因为我觉得它应该更明显是什么问题。

该库附带.lib.h,并向system32安装.dll。这是来自.h

的函数声明
__declspec(dllimport) unsigned short InPortB(unsigned long Port);

该库附带一个数字IO卡,您可以使用此功能将数据写入。端口是卡的地址。我知道地址是0xdeb0,我可以验证写入这个地址是有效的,因为我用卡得到的示例代码没有错误。我得到的示例代码是C ++ VS2005解决方案。我可以建造它,一切都很好。当我尝试将示例代码复制到我的Qt应用程序中时,我得到了访问冲突。

所以,我首先想到的是与调用约定不匹配,但如果是这种情况,我不会看到应用程序如何链接。

我只看了我的应用程序的exe依赖,这有点奇怪。看起来我的应用程序实际上并没有调用外部库中的任何函数。此外,当我从Windows错误消息中查看调试输出时,我没有看到任何地方加载DLL。

我是否必须手动加载dll?在运行visual studio项目时,我不必对dll做任何事情,所以这对我来说没有意义。我在这里很丢失。

0 个答案:

没有答案