64bitPCから32bitアプリケーション作成時リンカエラーについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
attMarkCuser123

64bitPCから32bitアプリケーション作成時リンカエラーについて

#1

投稿記事 by attMarkCuser123 » 4年前

64bitPCで作成したx64アプリケーションをもとに、同じPCで32bit用アプリケーションを作成しよとしているのですが、
リンカエラーが出てしまいます。なにが問題なのか見当がつきません。どなたかご教授お願いします。

64bitのリンカ設定の状態で32bitをビルドした結果以下エラーが出てしまいます。
エラーは、LINK2019, 2001です。

環境 Windows7 64bitPC, VC++2012, Framework 4.5.50709

よろしくお願いします。

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#2

投稿記事 by YuO » 4年前

attMarkCuser123 さんが書きました:64bitのリンカ設定の状態で32bitをビルドした結果以下エラーが出てしまいます。
64bitのリンカ設定というのは,/MACHINEリンカオプションがx64だということですよね。
それは32bitビルドではないと思いますが。
attMarkCuser123 さんが書きました:エラーは、LINK2019, 2001です。
エラーメッセージは正しく書いてください。
Microsoftのリンカはエラーコードとして,LINKではなくLNKをプリフィックスとして使います。そして,
リンカ ツール エラー LNK2001
リンカ ツール エラー LNK2019
どちらも,シンボルの解決ができなかったという内容のエラーです。

環境が変化したことで関数等が存在しなくなった,#if等による切り分け時にスペルミスをした,等がないか確認してみてください。

attMarkCuser123

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#3

投稿記事 by attMarkCuser123 » 4年前

YuO様、ありがとうございました。

記述ミス申し訳ございませんでした。

初心者で説明がうまくできるか自信がないのですが、
説明に不備があったように感じました。
x64環境でビルド、実行まで確認できているソースなので、
スペルミスはありませんでした。

コンパイルの際、
構成→Debug、プラットホーム→x64 で正常にコンパイルできたソースを、
構成→Debug、プラットホーム→x86 に変更した状態でコンパイルすると、
エラーとなってしまいます。

エラーコードは、LNK2019,LNK2001です。
エラー一覧の説明には、組み込みAPIの関数名が含まれています。
原因と、解決策についてご教授お願いします。

attMarkCuser123

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#4

投稿記事 by attMarkCuser123 » 4年前

追記です。組み込み用のAPI(Lib)は、x86, x64用のインストールがそれぞれあるので、
32bit用アプリケーションは、この場合、x86PCからでないとビルドできないのでしょうか。
一般的な意見でもよいので、お聞かせ頂けると幸いです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#5

投稿記事 by softya(ソフト屋) » 4年前

私は64bitOS上で32bitアプリケーションのビルドを問題なく行っています。
一般的には問題無いと思いますので、追加ライブラリなど固有の問題だと思います。
試しに、凄くシンプルなmainだけのprintfかsoutするだけのコンソールプログラムでx86ビルドが通るか確認してみてください。
※ 物事をシンプルにして確認するのは、環境整備/デバッグ/テストの基本事項です。

【補足】
> 組み込み用のAPI(Lib)は、x86, x64用のインストールがそれぞれあるので

それを正しく扱えているかが問題ですが、いま出ている情報では正しく扱えていないとしか思えません。
情報が少なすぎるので、一般論とし言えるのはこれだけです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

attMarkCuser123

Re: 64bitPCから32bitアプあtリケーション作成時リンカエラーについて

#6

投稿記事 by attMarkCuser123 » 4年前

softya様ありがとうございました。
簡単なPGを作成して、64bitPCで 64bit,32bitプラットフォームで正常に動作すること確認できました。

意見をいただき、
組み込みAPIの問題のように思いましたので、32bitPCに環境を構築し
試したいと思います。

ありがとうございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#7

投稿記事 by softya(ソフト屋) » 4年前

誤解の無いように書いておきますと、64bitOSにおいてVisualStudioのプロジェクトの設定などを適切に行えば、32bitのアプリケーションは問題なくビルド出来ます。
32bitPCに持っていってビルドする手間も必要ありません。
現状は、attMarkCuser123さんのVisualStudioのプロジェクトの設定で64bitビルドは正しいが32bitビルドはプロジェクトの設定が正しくと言うことになります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe()

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#8

投稿記事 by ISLe() » 4年前

x86の構成にx64ライブラリ用の設定が行われている
→x64とx86ではライブラリへのパスが異なるため見付からない
→x64とx86ではライブラリのファイル名が異なるため見付からない
あるいは、そもそもx86の構成にライブラリ用の設定が行われていない
といったことはないですかね。

例えばx86構成を作るとき、x64構成をコピーすると前者に、新規だと後者になると思います。
最初からx86構成があったとしても、(x64用の)ライブラリの設定をしたとき、すべての構成に対して設定すると前者に、x64構成しかいじってないと後者になると思います。

要するに、ライブラリを使うための設定は適切に行われていますか?ということ。
プロジェクトの設定で、(追加の)ライブラリパスや追加のライブラリの設定を、構成ごとに、確認してください。

ライブラリの使い方を理解していないと環境が変わっても同じ問題にぶつかると思います。
新たに環境を作ってもライブラリを使うための設定をしなければ、x86だろうがx64だろうが関係なく同じエラーが出ます。

attMarkCuser123

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#9

投稿記事 by attMarkCuser123 » 4年前

softya様詳しい解説ありがとうございました。

32bitPC環境構築後、ビルドしたところ正常完了しました。

32bit版ライブラリを64bitPCに持っていって、ライブラリ設定後、x86でビルドすると正常完了するのでは
ないかと感じました。

念のため試す予定です。

ISLe()

Re: 64bitPCから32bitアプリケーション作成時リンカエラーについて

#10

投稿記事 by ISLe() » 4年前

ライブラリのx86とかx64というのは、作成する実行形式に合わせて使い分けるものです。
開発している環境とは無関係です。

閉鎖

“C言語何でも質問掲示板” へ戻る