2013-04-18 87 views
0

如何結合所有的DLL和使一個DLL?如何結合所有的DLL,並使一個DLL?

我已經使用opencv編寫的算法,現在我想打一個DLL,而聯合使用OpenCV的DLL的

如果可能的話,請提出了一些步驟。

+0

簡單。只需將源代碼移植到所有DLL中,並使用它們創建一個DLL項目。缺少http://www.binary-soft.com/dll2lib/dll2lib.htm可能會有所幫助,但該任務不是微不足道的,也不保證是可行的。 – mah

+1

@mah:一般來說不起作用。每個DLL都有自己的'DllMain()',你需要合併它們。這不是一項簡單的任務。 – MSalters

+0

@ MSalters我同意這不是一件簡單的事情,我不知道它是否會起作用,但如果該工具按照預期工作,它可能會起作用。該工具將DLL轉換爲靜態庫(包括處理DllMain,我期望);人們可以轉換多個DLL,然後在理論上用結果構建單個DLL。過去我使用過該工具進行單個DLL轉換,結果混雜。 – mah

回答

2

第一步是找出opencv是否支持靜態鏈接(即,如果您可以鏈接到沒有任何.dll的.lib文件)。大多數圖書館沒有。大多數圖書館都可以通過自定義來支持這一點(並非如前所述微不足道,但可行)。這是一個很大的如果。

但是,假設opencv支持靜態鏈接,則需要將其編譯到.lib(「Type Library」類型的項目)中。然後在使用opencv的項目(輸出類型dll)中,只需鏈接opencv.lib。 幾個注意事項:確保所有項目(包括opencv)都使用完全相同的Unicode設置和「代碼生成」CRT連接(/ MT或/ MTD或/ MD或/ MDD)。

我無法一眼就看到opencv是否支持靜態鏈接。

+1

你*可以*重建OpenCV作爲靜態庫,所以 - 正如你所說 - 你可以在理論上將一切靜態鏈接到另一個DLL或EXE。從我+1。 –