簡體   English   中英

SWIG-使用cygwin包含現有的靜態C ++庫(.lib)

[英]SWIG - include existing static C++ library (.lib) using cygwin

我目前正在研究Java項目,該項目將添加到現有的較大系統中。 與系統的通信是通過網絡連接以XML為基礎的。

問題在於該系統是用C ++編寫的,並且它們提供給我們以與系統進行通信的庫是基於C ++的靜態庫( .lib )。 我們具有該庫的頭文件,因此我能夠使用SWIG生成.java和相應的包裝器文件。

現在,我面臨的問題是如何在我的.dll包含此靜態庫,該庫將用於接收來自Java程序的JNI調用。

我需要如何調用gcc來生成可運行的dll? 甚至可以在不訪問庫源代碼的情況下執行此操作?

在此先感謝您提供任何有用的答案。

絕對有可能-當使用包裝SWIG生成的DLL編譯並鏈接DLL時,您需要執行以下操作:

g++ -Wall -Wextra -shared -o test.dll test_wrap.cxx -Wl,--whole-archive some.lib

這里的關鍵是要把SWIG包裝的代碼生成的DLL鏈接到已有的.lib。 (我沒有太多使用cygwin,但是在這種情況下,您可能還希望將-mno-cygwin添加到編譯器標志中,具體取決於.lib的構建方式)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM