
error LNK2019: 未解決の外部シンボル __imp__○@4 が関数 _○ で参照されました
すべてのエクスポート関数について、上記と同じエラーとなります。
「@4」等、DEFファイルに記述されたエクポート番号までは捉えているのにエラーとは何事でしょうか。
Microsoftのアンサーを見ても理解できません。
ツール:VisualStudio2010のMFC
小生の知識
DLLとリンクする場合、○.libファイルとエクスポート関数を定義する○.hファイルがあればよい。これまで、この考え方でうまくできていました。
他社のICのドライバにおいて、コンパイル・リンクで苦労したことはありません
困りました。
FTDI社のFT232HでSPI-USB変換を目論んで、多数のファイル、サンプルプロジェクトをダウンロードしました。
サンプルプロジェクトを生のまま、VisualStudio2010にかけると問題なく成功します。
ソースを切り取って、こちらのアプリ(MFCのダイアログベース)に利用します。
(このやり方で、他社のドライバでは成功しています)
結果、コンパイラは通るが、リンクで関数が存在しないとなります。
libMPSSE.dll、libMPSSE.lib、libMPSSE_spi.h :○.dll、○.lib、○.h 揃っています。
VisualStudioのツールDumpbin /exportsでlibMPSSE.dllを見ると確かにエクスポート関数が存在するのが見えます。(ただし、libファイルは不明です)
ところで○.hを見ると
#ifdef FTCSPI_EXPORTS
#define FTCSPI_API __declspec(dllexport)
#else
#define FTCSPI_API __declspec(dllimport)
#endif
はなんでしょうか。初めて見るものです。関係しているでしょうか。
#ifdef __cplusplus
extern "C" {
#endif
、、、、、、、
#ifdef __cplusplus
}
#endif
はなんとなくわかります。また他に他社のドライバと目立った違いはないようです。
No.1ベストアンサー
- 回答日時:
VisualStudio2010 は使用した事ありませんが、
どこかリンカの設定に詳細メッセージを吐く項目が有るはずなので、そこを活かしてみると、閲覧者にも状況が判ると思います。
一応、私が見て前提にしている事は、
・アプリ(MFCのダイアログベース)では libMPSSE_spi.h をインクルードしている。
・また、libMPSSE.lib はアプリから参照出来る位置に配置・定義されている。
です。
なお、○.dll、○.lib、○.h はおそらく雛形ですからプロジェクトから外した方が良くないですか? 回答側から見て混乱するだけなので…
<<どこかリンカの設定に詳細メッセージを吐く項目が有るはずなので、そこを活かしてみると、閲覧者にも状況が判ると思います。>>
davidfox 様、よいヒントをありがとうございました。
リンカーオプションを眺めますと、
リンカの設定に、「進行状況の表示」があり、「詳細情報をすべて表示 (/VERBOSE)」と設定すると、多数の詳しいメッセージが出ました。
これをヒントにして、考えて、
1.リンカの設定に「対象コンピュータ」を選択する所があって、デフォルトでは「MachineX86 (/MACHINE:X86)」となっていて、これはBADでした。
これを「MachineX64 (/MACHINE:X64)」に設定します。
2、「ビルド」 - 「構成マネージャ」― 「プラットホーム」でデフォルト の「Win32」になっているものを、「X64」に変更します
以上、2点を設定することで、エラーが出なくなりました。
結論は、○.libは64bit版で作られていたということになります。
FTDI社は、64bit版のみを提供していた。もし、32bit版も同時提供していたら、小生は気づかずに32bit版を作っていたことでしょう。現実に32bit版でも64bit上で動くので、自分では64bitアプリを作ったつもりになっていたでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- その他(Microsoft Office) 【スプレドシート】IMPORTRANGE関数とSUMIFSの組み合わせ 1 2023/03/05 18:17
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- Excel(エクセル) Excelを開くとエラーが出る 2 2022/10/03 16:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- その他(社会・学校・職場) 誰か聞いてください。 社会人6年目ですが、私はポンコツすぎますか? 上司にとあるAファイルの数式を全 1 2023/08/10 18:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スタティックリンクライブラリ...
-
C++によるPostgreSQLの接続
-
BorlandC++Builder5.0でリンカ...
-
WindowsにおけるPostgreSQL+C言...
-
error LNK2001: 外部シンボル "...
-
'stdafx.h'のエラーに関して
-
富士通のSoftune
-
DirectXのdmusici.libについて
-
dllかlibか
-
exeファイルはどのdllを参照す...
-
opencvで画像上に丸を描画の方法
-
GDLの設定
-
C++Builder リンカエラーとは?
-
eclipseでのcsvファイル読み込み
-
VC++でビルド時の、リンク警告 ...
-
'd3dx9.lib' が開けません。
-
【VS2008 C++】2つのプロジェ...
-
スタティックライブラリ関係の...
-
インポートライブラリ(.lib)フ...
-
operator new が再定義されてい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studio community2017 O...
-
C++Builder リンカエラーとは?
-
fatal error LNK1104: ファイル...
-
スタティックライブラリ関係の...
-
静的/動的リンクライブラリにつ...
-
【VS2008 C++】2つのプロジェ...
-
error LNK2019: 未解決の外部シ...
-
C言語のPathFileExistsについて
-
「MFCを使用しない」から「MFC...
-
'stdafx.h'のエラーに関して
-
dllかlibか
-
VS2010にて、依存関係とビルド順
-
'd3dx9.lib' が開けません。
-
VC++でビルド時の、リンク警告 ...
-
eclipse+MinGWの環境で外部ライ...
-
インポートライブラリ(.lib)フ...
-
C/C++の.libについて教えてくだ...
-
#pragma commentの相対パス指定
-
OpenSSLの共有ライブラリ(libcr...
-
MP3の再生
おすすめ情報