我已經開發了一個程序,我試圖讓這個程序與其他公司製造的可控光源一起工作。我通過電子郵件發送公司,他們已同意將我的外部庫作爲DLL發送給我。Qt並鏈接到一個外部DLL
我已經開發全部採用的Qt 4.8.1我的軟件,並且已經使用MSVC2008編譯。
可控光源的DLL是在Visual Studio 2008中編譯的,是用C++或C#(製造商不確定)編寫的。所有我一直在考慮是DLL和一個文本文件,說我必須:
- 作爲參考添加DLL到我的項目
- 添加
using LightName;
到類 - 頂部實例化的一個實例對象如下:
LightName *ln = new LightName();
- 使用新創建的LightName實例調用函數void turnOn()。
首先,我覺得很奇怪,一個外部庫需要我特別的實例化對象的實例時,它的一個簡單的硬件。
其次,另一家公司沒有給我提供任何接口文件。
我的問題是: 我怎麼可能鏈接到C++ DLL和揭露嵌套在這個庫中的功能,而無需在一個Qt環境具有界面頭文件?有沒有辦法爲外部圖書館製作一個界面?
我已經使用QLibrary和做以下嘗試:
QLibrary myLib("mylib");
typedef void (*MyPrototype)();
MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol");
if (myFunction)
myFunction();
然而,這並不工作,因爲我得到的DLL不是一個C DLL,我沒有接口,這樣的Qt並不知道需要解決什麼樣的符號。
我試圖使用dumpbin/EXPORTS命令顯示從我的DLL導出的所有定義。不幸的是,這是無法產生任何東西。我希望能從中得到一些破壞性的C++,然後我可以解讀它來創建自己的頭文件。
我已經嘗試使用dependency walker(非常有用的工具),但它解決不了任何符號給我一些函數定義。
我不建議使用'QLibrary'來使用外部庫。只有當你事先不知道圖書館的名字時(例如,當你想支持插件時)它才需要。 我想你只需要使用你的* .pro文件鏈接一個庫。 – fasked
是的,這一切都很好,也可以從.pro加載庫。無論是從QLibrary還是從.pro加載外部庫,我怎樣才能調用C++中編寫的DLL的給定庫中的函數? @fasked – stackunderflow
他們給出了他們不會發送標題的原因嗎? – cmannett85