現在、C言語の中で疑似逆行列を用いた最小2乗法によって
データの処理を行いたいと考えています。
そのためにCLapackという線形演算ライブラリを
visual studio 6.0に組み込みたいのですがうまくいきません。
研究で、ADボードやロボットマニピュレータを使うために
Win32 Application で自分でプログラムを書いています。
Win32 Console Application にCLapackを組み込む事は、
http://www.alab.t.u-tokyo.ac.jp/~bond/doc/clapac …
を見てうまくいったのですが、Win32 Applicationで組み込もうとすると、以下のようなエラーがでます。
リンク中...
LINK : warning LNK4049: ローカル定義のシンボル "_free" がインポートされました
LINK : warning LNK4049: ローカル定義のシンボル "_fprintf" がインポートされました
LINK : warning LNK4049: ローカル定義のシンボル "__iob" がインポートされました
LINK : warning LNK4049: ローカル定義のシンボル "_malloc" がインポートされました
LINK : warning LNK4049: ローカル定義のシンボル "_exit" がインポートされました
clapack.lib(dlamch.obj) : error LNK2001: 外部シンボル "__imp__printf" は未解決です
clapack.lib(xerbla.obj) : error LNK2001: 外部シンボル "__imp__printf" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー
プログラムに関する知識が乏しいため、解決できません。
またmath.hをインクルードすると大量のエラーがでます。
CLapackについて詳しい方がいらっしゃいましたら、
どうか教えていただけないでしょうか?
よろしくお願いします。
No.1
- 回答日時:
おはようございます.
CLAPACKのエラーというよりは
「Win32のGUIに標準入出力ライブラリを組み込もうとした」為のエラーという気がします.
CLAPACKは処理がコケると標準出力にエラーを出してくれるのですが,
ここで要求される関数がリンク時に未解決であるという意味に読めます.
GUIアプリケーションを作るなら普通はprintfなどとせずに,
メッセージボックスを作りますよね?
だから初期設定ではこうしたものはリンクされないようになっているのでは?
余談ですが…
擬似逆行列を陽に計算するのは無駄なのではないですか?
dgels_ を使った方が良いのでは?
この回答への補足
早速の回答ありがとうございます。
たしかに私のプログラムでは、ダイアログボックスで、
MessageBoxやGetDlgItemなど関数を使っています。
このような場合にCLapackを使うことは難しいのでしょうか?
また
>擬似逆行列を陽に計算するのは無駄なのではないですか?
>dgels_ を使った方が良いのでは?
についてですが、僕の言葉足らずですいません。
CLapackを組み込めたら、疑似逆行列は使わずにdgels_という関数を使うつもりです。最小2乗法によってパラメータが推定出来ればどんな方法でも大丈夫です。
No.2ベストアンサー
- 回答日時:
こんにちは.
私はWindows上ではコンソールで少しCLAPACKを触った程度なのですが…アドバイスを.
おそらく,上記のエラーはCLAPACKの問題ではありません.
「WindowsのGUIプログラムで標準I/Oが使えるか?」という問題になってくると思います.
理由はエラーの内容が「Linkエラー」だからです.
コンソールプログラムを「コンパイルして」実行ファイルを作るときに,
「printf()」というあなたが書いていない関数の機能が使えるのは,
あなたのプログラムを「コンパイルして」半分機械語にした後に,
printf()の入った半分機械語のファイルが結合されるからです.
この過程を「リンク(link)」といいます.
このように,「みんなが使う機能」をまとめておいて,後でリンクするものをライブラリなどと言ったりします.
ここで,printf()はC言語の「標準ライブラリ」の標準I/O関数の一つです.
コンソールアプリケーションでは
「実行ファイルを作るためには最後に標準ライブラリをリンクせよ」という設定になっているから,
無事に実行ファイルが作られるのでしょう.
ですが,通常のGUIプログラムではprintf()などは使わないでしょう,
だから,初期設定では標準ライブラリをリンクする設定にはなっていないと思われます.
結果,実行ファイルを作るときにこれがリンクされずに,
「要求された関数が何処にも無かった!(未解決)」とLinkエラーが出るわけです.
ただし,ライブラリのリンクの問題だけか,というとそうでもないです.
GUIのプログラムでprintf()としたときに出力が何処に飛んで行くか,
と言われると一寸分からないので,一旦閉じて再度他の形で質問されたらどうでしょうか.
詳しいご説明ありがとうございます!!
いろいろ考えた結果、
結局、GUIのプログラムでCLAPACKを使うのは大変そうなので、
自力で疑似逆行列を求めるプログラムを書いてみることに決めました。
マニアックな質問に丁寧に答えて頂いたのに、申し訳ありません。
ただechoes_x86の回答のおかげで自分でプログラムを書いてみよう
と選択肢にたどり着くことができました。
そして、パラメータの推定は何とかなりそうです。
echoes_x86さんにはほんとに感謝しています。
ありがとうございます!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Python でWindowsのショートカット(.lnk)のプロパティを参照したい 1 2023/02/01 15:09
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- PHP php エラー 2 2022/10/23 16:43
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部依存関係について
-
popen・pcloseについて
-
Visual C++ 2005 Express Editi...
-
リンカのエラー
-
外部シンボル" ~~"は未解決で...
-
プロセスIDの取得の方法。
-
C言語のエラー LNK1120: 外部参照
-
「外部シンボルが未解決」につ...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
アプリケーションのDLLファイル...
-
<math.h>があるのにsqrtが・...
-
<unistd.h>をVisualStudioでつ...
-
適切な変換関数が存在しない???
-
バッチからsqlplusの接続エラー...
-
fortranでプログラムを実行する...
-
unsigned long long 型のフォー...
-
C言語なうなんですが、コンパイ...
-
error C3867 関数呼び出しには...
-
「fatal error C1189」を回避す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
LNK2019: 外部シンボル どのよ...
-
C++でのエラー LNK2001
-
error LNK2001について
-
外部シンボルの未解決のエラー
-
外部シンボル" ~~"は未解決で...
-
コンパイルエラー
-
OpenCVでの画像サイズ取得につ...
-
LNK2019: 未解決の外部シンボル...
-
実行ファイルの容量を減らした...
-
エラー 未解決の外部シンボル
-
LNK2001(Pro*c)
-
popen・pcloseについて
-
DB2付きのC言語がコンパイルで...
-
PathIsDirectoryを使って
-
CLapack C++
-
外部シンボルについて
-
C++ の LNK2001エラー
-
未解決の外部シンボル
-
VC++ 6.0へのサンプルプログラ...
おすすめ情報