2017-07-02 119 views
-1

我有一個靜態格式(.lib)和具有自己的導入庫(.lib)的動態格式(.dll)的第三方C庫。它是MKL(英特爾數學核心庫)。我正在與Windows 7上的cygiwn 64一起工作。如何在cygwin中使用gcc鏈接第三方C庫

簡而言之,我試圖讓一個在POSIX世界中工作的編譯器與在Windows世界中編譯的lib進行交談,假設這是非常可能的。

我想鏈接該庫作爲C​​ ++可執行文件的一部分我正在用cygwin中的g ++進行編譯,並試圖使用導入庫鏈接到DLL。

我的命令行中,爲了簡化省略文件路徑,導致未定義的引用錯誤。

$ g++ main.obj mkl_intel_lp64_dll.lib mkl_sequential_dll.lib mkl_core_dll.lib -o paper.exe 
mkl_intel_lp64_dll.lib: blah, blah, blah: undefined reference to `__GSHandlerCheck' 
... and many other similar errors 

有人知道是否有可能,如果是的話,怎麼做?

感謝

+0

可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](https://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) –

+0

@Mark,我不認爲這是重複的。我試圖讓一個在POSIX世界中工作的編譯器接受一個在Windows世界中編寫的lib,我甚至不知道它是可能的。我還沒有發現任何關於這個主題的結論。 – Fabio

回答

1

嘗試重新安排參數G ++使main.obj先於它所引用的庫。

+0

如果你使用g ++,那你有沒有main.obj?誠然,這可能無關緊要。 – tim18

+0

@varro,謝謝,它解決了第一個問題,但現在還有很多其他的符號未找到,例如, __GSHandlerCheck。試圖添加libcmt,但它沒有幫助。 – Fabio

+0

@ tim18,它只是我給Makefile中的目標文件的名字。我可以使用MingW,但他們發佈的gcc版本相當老舊。我需要6或更高版本。 – Fabio

相關問題