C言語を用いてプログラムを書いています。
コンパイラはvisual studio2010を用いていて、そのときは問題なくコンパイルできていました。
ところが、visual studioを2012にアップロードすると、
未解決の外部シンボル__report_rangecheckfailureが~で参照されました
というエラーがでました。そのとき、ライブラリファイルとして、user32.lib、gc.lib、libcd.libをリンクしていたのですが、
いろいろ調べていたところ__report_rangecheckfailureはmsvcrtd.libの中にあるとわかったので、上記のライブラリファイルに加えて
msvcrt.libをリンクに追加しました。
すると、
msvcrt.lib(gs_cookie.obj) : error LNK2005: ___security_cookie は既に libcd.lib(s
eccook.obj) で定義されています。
というエラーがでました。
なので、libcd.libを/nodefaultlibを用いて参照しないようにすると
gc.lib(malloc.obj) : error LNK2001: 外部シンボル "_errno" は未解決です。
というエラーがでました。
おそらくライブラリファイルの呼び出しの部分でうまくいっていないと思うのですがなかなか本質的な解決にはいたっていません。
なにか解決法があればご教授願いたいと思います。
ちなみにC言語については初心者レベルです。
外部シンボル"_errno"は未解決です
Re: 外部シンボル"_errno"は未解決です
過去ログです。
LNK2019:未解決の外部シンボル__report_rangecheckfailure • C言語交流フォーラム ~ mixC++ ~
「Project → Upgrade VC++ projects…」というメニューでプロジェクトをVS2012のものにアップグレードするといいらしいです。
LNK2019:未解決の外部シンボル__report_rangecheckfailure • C言語交流フォーラム ~ mixC++ ~
「Project → Upgrade VC++ projects…」というメニューでプロジェクトをVS2012のものにアップグレードするといいらしいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 外部シンボル"_errno"は未解決です
「Project → Upgrade VC++ projects…」というメニューでプロジェクトをVS2012のものにアップグレードするといいらしいです。[/quote]
プロジェクト等は使ってないんですけどね・・・
visual studioのコマンドプロンプトでコンパイルをしているだけで・・・
私自身の理解が浅いだけかもしれませんが。
プロジェクト等は使ってないんですけどね・・・
visual studioのコマンドプロンプトでコンパイルをしているだけで・・・
私自身の理解が浅いだけかもしれませんが。
Re: 外部シンボル"_errno"は未解決です
それも考えて、いろいろ試してみたのですがなかなかうまくいきません。みけCAT さんが書きました:では/GS-オプションを試してみてください。
いろいろ調べていたところ
「異なるバージョンのコンパイラで作ったライブラリをリンクさせようとすると、コンパイラが勝手にコードを埋め込む」
というのを見て、おそらくこれと同じようなことが起こっているのでは?と思うのですが・・・
オフにするとは具体的にどうするかおわかりでしょうか?
プロジェクト→プロパティ→C/C++→コード生成→セキュリティチェックといってオフにすることはできるのはわかるのですが、
プロジェクトを使っているわけじゃないので、この操作もできないのです・・・
Re: 外部シンボル"_errno"は未解決です
コマンドラインを使ってビルドしてるのではないのですか。channtaku さんが書きました:オフにするとは具体的にどうするかおわかりでしょうか?
プロジェクト→プロパティ→C/C++→コード生成→セキュリティチェックといってオフにすることはできるのはわかるのですが、
プロジェクトを使っているわけじゃないので、この操作もできないのです・・・
してるのであれば、そのコマンドラインの内容を示さないと、具体的な指摘はできないと思いますよ。
単純に
cl <ファイル名>.c user.lib gc.lib libcd.lib
とかしてるだけ?
written by へにっくす
Re: 外部シンボル"_errno"は未解決です
バッチファイルを用いて順次実行していくプログラムにしています。
エラーが出ているバッチファイルの中身は以下のとおりです。
cd 4_MP
cl /c Feeddown_v2.c
link /nodefaultlib:libcmt /nodefaultlib:libc /nodefaultlib:libcd Feeddown_v2.obj sub_files/split.obj sub_files/user32.lib sub_files/gc.lib sub_files/msvcrtd.lib
Feeddown_v2.exe
cd ..
4_MPのフォルダにFeeddown_v2.cが、4_MP\sub_filesにライブラリファイル等が入っています。
今は、gc.libのところで外部シンボル"_errno"は未解決ですというエラーが出ています。
3行目のライブラリファイルをいろいろいじっているのですが、なかなかうまくいきません・・・
エラーが出ているバッチファイルの中身は以下のとおりです。
cd 4_MP
cl /c Feeddown_v2.c
link /nodefaultlib:libcmt /nodefaultlib:libc /nodefaultlib:libcd Feeddown_v2.obj sub_files/split.obj sub_files/user32.lib sub_files/gc.lib sub_files/msvcrtd.lib
Feeddown_v2.exe
cd ..
4_MPのフォルダにFeeddown_v2.cが、4_MP\sub_filesにライブラリファイル等が入っています。
今は、gc.libのところで外部シンボル"_errno"は未解決ですというエラーが出ています。
3行目のライブラリファイルをいろいろいじっているのですが、なかなかうまくいきません・・・
Re: 外部シンボル"_errno"は未解決です
まだ足りないですね。
コマンドプロンプトで、環境変数を知るために、setを実行した結果を貼ってください。
ちなみに、みけCATさんが書いた、/GS-というのは、clのオプションです。
セキュリティチェックをオフにするという意味です。
オプションの説明などは、単純にcl /?を実行すると出てきますよ。
コマンドプロンプトで、環境変数を知るために、setを実行した結果を貼ってください。
ちなみに、みけCATさんが書いた、/GS-というのは、clのオプションです。
セキュリティチェックをオフにするという意味です。
オプションの説明などは、単純にcl /?を実行すると出てきますよ。
written by へにっくす
Re: 外部シンボル"_errno"は未解決です
cd 4_MP
cl /c Feeddown_v2.c
link /nodefaultlib:libcmt /nodefaultlib:libc Feeddown_v2.obj sub_files/split.obj sub_files/user32.lib sub_files/gc.lib sub_files/libcd.lib
Feeddown_v2.exe
cd ..
の2行目をcl /GS- /c Feeddown_v2.cとすることで解決できました!
ヘニックスさん、みけCHATさん、本当にありがとうございました!
cl /c Feeddown_v2.c
link /nodefaultlib:libcmt /nodefaultlib:libc Feeddown_v2.obj sub_files/split.obj sub_files/user32.lib sub_files/gc.lib sub_files/libcd.lib
Feeddown_v2.exe
cd ..
の2行目をcl /GS- /c Feeddown_v2.cとすることで解決できました!
ヘニックスさん、みけCHATさん、本当にありがとうございました!