2017-07-02 155 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

相关问题