2012-06-18 37 views
0

我想使用CMake和MinGW爲Windows編譯libzint(一個條形碼生成器)。目標是避免Visual Studio依賴項。除了生成的.dll文件包含太多的導出符號之外,所有運行都很好。我應該只有ZBarcode_ *函數,但實際上幾乎所有聲明爲變量/常量的東西都會導出(並且生成的.dll文件沒有版本信息,我認爲這很奇怪。)使用CMake和MinGW編譯的項目導出的符號太多

下面是我做的工作:在d的github倉庫

  1. 混帳克隆:\項目\青特
  2. 安裝在C cmake的:\ CMake的
  3. 安裝在C MinGW的:\ MinGW的
  4. 開始cmake的桂,瀏覽到D:\ Projects \ Zint
  5. 點擊「配置」,在列表中選擇「MinGW Makefiles」並選擇「指定本地編譯器」,接下來我指定了完整路徑到c:\ mingw \ bin \ mingw32-gcc.exe(肯定...)
  6. 點擊「配置」。它成功,但它的紅色增加了一些變數,因爲在那裏沒有得到滿足的依賴關係(PNG和QT,但我不想讓他們和ZINT是罰款,沒有他們)
  7. 點擊「配置」了,一切都變成了白色
  8. 點擊「生成「
  9. 關閉cmake的桂
  10. 啓動控制檯提示符
  11. 推翻路徑變量環境到C:\ MinGW的\ BIN只有
  12. 去 」d:\項目\青特「 跑」 mingw32- make「then」mingw32-make install「
  13. the libzin t.dll和zint.exe被部署到:我以前Dependency Walker來看看導出的函數,看到「C:\ Program Files文件\ ZINT包\ BIN」

,除了少數ZBarcode_ *功能還有大約400個其他符號,並且給出了源代碼,我看到這些符號實際上是常量,數組和其他libzint內部函數。

你知道如何配置或調整東西以避免所有這些導出嗎?

非常感謝您的幫助,問候。

回答

0

請在標題中查找包含dllexport的任何宏。如果您發現一個或多個,請檢查它沒有發生故障。

另一種可能性是所有的類都被導出,而不是僅僅需要的少數幾個函數。

如果您有grep,請執行grep -nr dllexport *。這將遞歸查找所有文件。對於每一次打擊,它都會打印文件名,行號和行內容。