2017-07-02 2 views
-1

J'ai une bibliothèque C tierce, à la fois en format statique (.lib) et en format dynamique (.dll) avec sa propre bibliothèque d'importation (.lib). C'est MKL (Intel Math Kernel Library). Je travaille avec Cygiwn 64 sur Windows 7.Comment lier une bibliothèque C tierce utilisant gcc dans cygwin

En bref, j'essaye d'obtenir un compilateur né pour travailler dans le monde POSIX pour parler à une lib compilé dans le monde de Windows, en supposant que c'est possible. Je veux lier cette bibliothèque dans le cadre d'un exécutable C++ que je compile avec g ++ dans cygwin et j'essaye de lier avec la DLL en utilisant la bibliothèque d'importation.

Ma ligne de commande, où j'omets les chemins de fichier pour plus de simplicité, génère une erreur non définie de référence.

$ 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 

Quelqu'un sait si c'est possible, et, si oui, comment le faire?

Merci

+0

Copie possible de [Qu'est-ce qu'une erreur de symbole externe de référence/non résolue non définie et comment la réparer?] (Https://stackoverflow.com/questions/12573816/what-is-an-defined-reference-unresolved- external-symbol-error-and-how-do-i-fix) –

+0

@Mark, je ne pense pas que ce soit un doublon. J'essaye d'obtenir un compilateur né pour travailler dans un monde POSIX pour accepter une lib écrite dans le monde de Windows, dont je ne suis même pas sûr que ce soit possible. Je n'ai rien trouvé de concluant sur ce sujet. – Fabio

Répondre

1

Essayez réorganisant les arguments à g ++ afin que main.objles bibliothèques précède il fait référence.

+0

Si vous utilisez g ++, comment se fait-il que vous ayez le fichier main.obj? C'est vrai, cela n'a pas d'importance. – tim18

+0

@varro, merci, cela résout le premier problème, mais maintenant il y a beaucoup d'autres symboles non trouvés, par ex. __GSHandlerCheck. Je ai essayé d'ajouter libcmt, mais il ne aide pas. – Fabio

+0

@ tim18, c'est juste le nom que je donne au fichier objet dans le Makefile. Je pourrais utiliser MingW, mais la version de gcc qu'ils expédient est assez ancienne. J'ai besoin de 6 ou plus tard. – Fabio