2012-04-10 7 views
0

Ich habe Schwierigkeiten beim Erstellen eines Projekts in Windows 7/Visual Studio 2010, und schon länger als ich googlen und Fixieren anderer Fehler, um an diesen Punkt zu kommen, aber frustrierend kann ich nicht scheinen um den allerletzten Fehler loszuwerden.Problem mit libgsl und wxwidget

wxTheAppInitializer“(? WxTheAppInitializer @@ 3VwxAppInitializer @@ A) bereits definiert in main.obj 1> libgsl.a (linalg_svd.o: Es gibt einen Linker Fehler an die _hypot Funktion definiert in math.h zusammenhängt): Fehler LNK2019: error LNK2001: nicht aufgelöstes externes Symbol _hypot 1> libgsl.a (linalg_householder.o): Fehler LNK2001: extern nicht aufgelöstes externes Symbol _hypot in Funktion _gsl_linalg_SV_decomp 1> libgsl.a (matrix_oper.o) verwiesen Symbol _Hypot

: Schwerwiegender Fehler LNK1120: 1 nicht aufgelöstes externes

Als ich den Rat von unresolved external symbol "_hypot" when using static library folgen ich folgendes:

1> Code generieren ... 1> main.obj: error LNK2005: _hypot bereits definiert in About.obj 1> fataler Fehler LNK1169: eine oder mehrere definierte Symbole gefunden

Kann jemand erklären, was vor sich geht?

+0

Ich erkennen, dass, wenn ich _hypot in math.h ganz kommentieren, und es in meinem Haupt-reimplementieren. cc als: #include extern "C" { \t Doppel hypot (double _X, Doppel _Y) \t { \t \t Rückgabe _Hypot (_X, _Y); \t} } dann kann ich ohne Fehler bauen. Ich denke, das ist der ursprüngliche Beitrag. Aber es scheint wie eine wirklich dreckige Lösung. Kann jemand eine sauberere Reparatur empfehlen, ohne math.h permanent zu bearbeiten? – LPlates

Antwort

0

erstellen C-Datei mit folgendem Inhalt:

extern double fabs(double); 
extern double sqrt(double); 

double hypot(double x, double y) { 
    double ax = fabs(x), ay = fabs(y); 
    double xy = x/y, yx = y/x; 
    return ax > ay 
    ? ax * sqrt(1.0 + yx*yx) 
    : ay * sqrt(1.0 + xy*xy); 
} 

nicht enthalten math.h