2012-04-10 15 views
0

Windows 7/Visual Studio 2010でプロジェクトを構築するのに問題があります。この時点までにグーグルで他のエラーを修正するのに長い時間を費やしてしまいましたが、イライラすることはできません最後のエラーを取り除く。 math.hで定義された_hypot機能に関連するリンカエラーがあります:libgslとwxwidgetのトラブル

wxTheAppInitializer」(?wxTheAppInitializer @@ 3VwxAppInitializerが@@ A) はすでにMAIN.OBJ 1> libgsl.a(linalg_svd.oで定義されています):エラーLNK2019:エラーLNK2001:未解決の外部シンボル_hypot 1> libgsl.a(linalg_householder.o): エラーLNK2001:未解決の外部 未解決の外部シンボルは、関数 _gsl_linalg_SV_decomp 1> libgsl.a(matrix_oper.o)で参照を_hypotシンボル_hypot

:致命的なエラーLNK1120:1未解決の外部

私は次の取得unresolved external symbol "_hypot" when using static libraryのアドバイスに従う:

1>のコードの生成... 1> MAIN.OBJ:エラーLNK2005:_hypotはすでに About.obj 1で定義されている>致命的なエラーLNK1169:1つまたは複数の掛け算記号 が見つかりました。

何が起こっているのか説明できますか?

+0

が含まれていません。 CCとして: の#include のextern "C" { \t二重関数hypot(ダブル_X、ダブル_Y) \t {\t \t return _hypot(_X、_Y); \t} } エラーなしでビルドできます。私はこれがオリジナルの投稿が何を得ていたかと思います。しかし、それは本当に汚い修正のように思えます。誰もが永久にmath.hを編集することなく、よりクリーンな修正を提案できますか? – LPlates

答えて

0

次の内容での.cファイルを作成します。

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); 
} 

を私は全くのmath.hで_hypotをコメントアウトし、私のメインでそれを再実装場合、その実現のmath.h