![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C++の初心者です。
C++で作成したプログラムがリンクでエラーになります。
エラーの内容は、”LNK2019:未解決のシンボル_IoInitが間数XXXXで
参照されました。”です。
IoInit関数を含むライブラリ(C:\JAVAC\ciolib.lib)をリンクする必要があり、リンカの/DEFAULTLIBオプションでライブラリを指定しましたが、状況は変わりません。
リンカの内容は、以下のとうりです。
cl -I:"C:\Program Files\Microsoft Visual Studio 8\VC\include" -I:C:\j2sdk1.4.2_18\include -I:C:\j2sdk1.4.2_18\include\win32 -LD -FeCiolibJNI.dll CiolibJNI.cpp /link -libpath:"C:\Program Files\Microsoft Visual Studio 8\VC\lib" /NODEFAULTLIB:C:\JAVAC\ciolib.lib
/DEFAULTLIB:C:\JAVAC\ciolib.libの指定が悪いのか状況は変わりません。それとも、指定オプションが悪いのか困っています。
リンカが悪いのであれば、修正箇所を教えてください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
もう1つ。
ライブラリが外部参照シンボルに _ を付けないコンパイラ用のライブラリで、使用するコンパイラが外部参照シンボルに _ を付けるコンパイラの場合、ライブラリ内の実シンボルは「IoInit」になっていますが、呼び出し側が「_IoInit」を呼ぼうとする為、リンカが名前解決に失敗します。
異なる処理系用のライブラリを使用する場合、関数の呼び出し規約が異なる可能性があるので、下手をすると暴走します。ご注意を(cdeclで定義された関数を、stdcallとして外部定義して呼び出すと、大変な事になるのと同じ)
No.2
- 回答日時:
C++では、関数の外部参照シンボルは「修飾子」が付加されます。
ライブラリ内の関数の「実シンボル名」に「修飾子」が付いている場合、その関数を「extern "C"」で外部参照宣言して呼び出すと、呼び出し側では「修飾子がないもの」として呼び出そうとします。
すると「ライブラリ側は修飾子付き、呼び出し側は修飾子なし」となり、リンカが名前解決に失敗します。
「IoInit関数のライブラリ上での定義」を確認して下さい。
No.1
- 回答日時:
> /NODEFAULTLIB:C:\JAVAC\ciolib.lib
NODEFAULT~になっていますが?
VS2005をご利用のようですが、統合開発環境は使用されていないのでしょうか?
統合開発環境の場合は、
>・Visual Studio 開発環境でこのリンカ オプションを設定するには
>このリンカ オプションは、Visual Studio 開発環境では使用できません。リンク フェーズにライブラリを追加するには、[入力] プロパティ ページの [追加の依存ファイル] プロパティを使用します。
と、MSDNに記述されています。
コマンドライン(またはmakefile)でしょりするのであれば、
ライブラリをフルパスで指定すればよいかと。
cl -I:"C:\Program Files\Microsoft Visual Studio 8\VC\include" -I:C:\j2sdk1.4.2_18\include -I:C:\j2sdk1.4.2_18\include\win32 -LD -FeCiolibJNI.dll CiolibJNI.cpp /link -libpath:"C:\Program Files\Microsoft Visual Studio 8\VC\lib" C:\JAVAC\ciolib.lib
ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipse+MinGWの環境で外部ライ...
-
operator new が再定義されてい...
-
fatal error LNK1104: ファイル...
-
VS2010にて、依存関係とビルド順
-
MinGWでOpenMPを使いたいのです...
-
【VS2008 C++】2つのプロジェ...
-
C++はじめようと思います
-
#pragma commentの相対パス指定
-
LTspice モデル作成について
-
visual studio community2017 O...
-
GDLの設定
-
共有ライブラリ作成時の -L
-
C++Builder リンカエラーとは?
-
VC++でビルド時の、リンク警告 ...
-
Radiusのmake時に表示されるエ...
-
DirextXエラー:ファイル'dxerr9...
-
OpenSSLの共有ライブラリ(libcr...
-
MP3の再生
-
mac(osX)で、Javaはどこにイン...
-
DirectInputについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタティックライブラリ関係の...
-
スタティックリンクライブラリ...
-
fatal error LNK1104: ファイル...
-
VC++6.0からVC++.NET2005へ移植
-
error LNK2001: 外部シンボル "...
-
C++Builder リンカエラーとは?
-
#include <winreg.h>をインクル...
-
タイプライブラリのレジストリ...
-
【VS2008 C++】2つのプロジェ...
-
#pragma commentの相対パス指定
-
'd3dx9.lib' が開けません。
-
'stdafx.h'のエラーに関して
-
VC++でビルド時の、リンク警告 ...
-
「MFCを使用しない」から「MFC...
-
error LNK2019: 未解決の外部シ...
-
静的/動的リンクライブラリにつ...
-
MP3の再生
-
dllかlibか
-
C++によるPostgreSQLの接続
-
visual studio community2017 O...
おすすめ情報