Gebäude statische Bibliotheken für windows mit cygwin

Ich versuche zu bauen CGAL für windows zu verwenden in meinem Projekt unter Visual Studio 2010. CGAL erfordert GMP und MPFR Bibliotheken und stellt Sie in die Verteilung. Jedoch bietet Ihnen als lib+dll-bundle, während ich möchte, dass Sie kompiliert werden, statisch in form einer single .lib-Datei.

So, ich bin jetzt versuchen zu bauen GMP und MPFR als statische Bibliothek unter windows. Ich bin mit cygwin für diesen Zweck vorgeschlagen hier. Nach Aufruf configure und make ich habe die Ausgabe libs mit .a Erweiterung mit zusätzlichen .la - Datei. Ich weiß wirklich nicht viel über statische Bibliotheken für Unix, also schlug ich vor es ist das gleiche wie .lib mit nur andere Endung. Ich benannte Sie um .lib und mit meinem Projekt - es passte gut.

Die erste Frage: ich war richtig das zu tun? Sind die .einem und .lib-Dateien wirklich die gleichen? Ich sah diese Frage, aber fand es nicht nützlich genug.

Dann das problem entstanden ist: ich hatte

error LNK2019: unresolved external symbol ___getreent referenced in function ___gmp_default_reallocate

Scheint, wie einige cygwin-Funktionen sind nicht mit im daraus resultierenden gmp.lib. Ich fand hier, dass getreent exportiert werden darf aus libcygwin.a. Also kopierte ich es auf libcygwin.lib und mit meinem Projekt. Nicht überraschend, erhielt ich die folgende Fehlermeldung:

error LNK2005: _strcpy already defined in libcygwin.lib(t-d001719.o) in libcmtd.lib(strcat.obj) 

Natürlich kann ich nicht wissen, welche Funktionen und wie werden Sie erklärt, in dieser Bibliothek und scheint, wie strcpy Konflikt mit einem von Visual Studio. Was ich wirklich will, geschehen ist gmp.lib schlau genug wäre, um den link dieser Funktion statisch. So,

Die zweite Frage: wie Kraft GMP-link library-Abhängigkeiten? oder, Wie man richtig bauen GMP für windows ohne cygwin?

InformationsquelleAutor Mikhail | 2012-02-24

Schreibe einen Kommentar