x64でビルドしてエラーLNK1112発生したときの解決法 – プログラミング – Home

x64でビルドしてエラーLNK1112...
 
通知
すべてクリア

[解決済] x64でビルドしてエラーLNK1112発生したときの解決法


傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

お世話になります。
Visual Studio 2010 VC++, MFC, SDIアプリです。
OSは、Windows 10 Home 64bit です。

従来 32bit アプリとして作成しておりました。
今般、64bit アプリになるだろうか? とやってみました。

構成マネージャー → アクティブ ソリューション プラットフォーム で、新規作成のx64
x64 を設定し、プロパティページのリンカー → 詳細設定 → 対象コンピューターが MACHINEX64
MACHINEX64 になっていることを確認しています。

Debug x64 でビルドすると、下記のエラーとなります。
Release x64 でビルドした場合は、正常終了します。作成したアプリも正常動作します。

エラー:
uafxcwd.lib(nolib.obj) : fatal error LNK1112: モジュールのコンピューターの種
類 'X86' は対象コンピューターの種類 'x64' と競合しています。

Visual Studio をアンインストールし再インストールしても同じ結果です。
どのように解決したらよろしいか、どうぞご教授お願いします。


引用未解決
トピックタグ
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

補足します。

自分のプロジェクトは、現在次の設定になっています。

①盤面の
 ソリューション構成:Debug
 ソリューション プラットフォーム:x64 【OK】
②構成マネージャー
 構成:Debug
 アクティブ ソリューション プラットフォーム:x64 【OK】
③リンカー → 詳細設定
 対象コンピューター:MachineX64(/MACHINEX64) 【OK】
④C/C++ → プリプロセッサ
 プリプロセッサの定義:WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)
⑤C/C++ → コマンドライン
 /I_T(C:\Program Files\HTML Help Workshop\include) /Zi /nologo /W4 /WX- /Od /D
D WIN32 /D _WINDOWS /D _DEBUG /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /M
MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /YuStdAfx.h /Fpx64\Debug\Aprint.p
pch /Fax64\Debug\ /Fox64\Debug\ /Fdx64\Debug\vc100.pdb /Gd /errorReport:qu
ueue
⑥VC++ ディレクトリ
 実行可能ディレクトリ:
 $(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 T
Tools;$(WindowsSdkDir)bin;$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7
7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(Framework
kSDKDir)\bin;$(FrameworkSDKDir)\lib\win64;$(MSBuildToolsPath32);$(FxCopDir);$(PAT
TH);
 参照ディレクトリ:
 $(VCInstallDir)atlmfc\lib\amd64;$(VCInstallDir)lib\amd64
 ライブラリ ディレクトリ:
 $(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WindowsSdkDir)lib;$(FrameworkSDKD
KDir)\lib

以上です。
④⑤⑥が、これでいいのかどうか解りません。

④のプリプロセッサの定義:WIN32 を X64 に書き換えてみましたが、ダメです。
⑥のライブラリ ディレクトリに、$(VCInstallDir)atlmfc\lib\amd64; を追記してみまし
たが、ダメです。

なお、エラーメッセージに出ているファイル uafxcw.lib はインストールされています。
C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\amd64\uafxcw.li
b


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

まず、
/D UNICODEは
/D _UNICODEの誤りではないかと考えますが、ペーストの失敗かもしれません。

それとは別に、原因を「環境」と「プロジェクトの設定」に切り分けるには、
ウィザードで生成したままのプロジェクトを X64にしてビルドしてみてはどうでしょう。
これが成功するしたならば、当該プロジェクトに誤りがあると考えられます。
失敗するならば、VSの基本的な設定に誤りがあるか、インストールに失敗か、
不足があると予測できます。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

仲澤@失業者様
良いアドバイス有難うございます。
早速やってみました。

●新規プロジェクト”test7”
1.MFCアプリのSDIとし、以下すべてデフォルトでビルドすると、WIN32 でも x64 でもOK
OKです。
2.ところが、ウィザードの途中で、「MFCの使用方法」を、デフォルトの「共有DLLで M
FC を使用する」ではなく、「スタティック ライブラリで MFC を使用する」に変えた場
合は、WIN32 でも x64 でもエラーとなります。
VS2010に問題がありそうです。
エラーメッセージ:
1>uafxcwd.lib(afxglobals.obj) : error LNK2001: 外部シンボル _IID_IWICImagingFac
tory は未解決です。
1>E:\VS2010\MFC\test7\Debug\test7.exe : fatal error LNK1120: 外部参照 1 が未解決です
です。

●最初にご相談したプロジェクト”kabuki”
これは、もともと、「スタティック ライブラリで MFC を使用する」で作成したものです。
最初

最初の環境は Windows 7 32bit、VS2010 でした。
現在、Windows 10 64bit, VS2010 です。
”kabuki”をWIN32のままでビルドするとOKだが、x64の構成では、Release ではOK、Debug
Debug ではエラーになるという状態です。

ややこしい状況ですが、まずは新規プロジェクトをスタティックライブラリMFCでエラー
なく作成できるようにしなければならないと思います。
ゆっくりやりますので、しばらく時間を戴きます。

有難うございました。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

そうなると、

「VS2010に付属のライブラリでは、Windows10に対応できない」

という可能性が考えられます。
VS2015ないしVS2017のCommunity版を試してみるべきかもしれません。
これらは、無料でMFCも使えます。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

https://www.microsoft.com/ja-jp/dev/support/tools.aspx
ここかな?
対応はしていますね。
ただ、64BITがどこまで対応しているかは示されていないですね。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

予備のパソコンに、Windows 10 Home の32ビット版をインストールし、Visual Studio
2010 も入れてやってみました。
MFCアプリ、SDI プロジェクトで、ウィザードをすべてデフォルトにしたときも、「MFCの使用方法」
使用方法」を「スタティック ライブラリで MFC を使用する」に変えた場合も、どちらも正常
正常にビルドできました。

本機の Windows 10 Home 64bit 環境で、Visual Studio 2010 は32ビットで動作してい
ます。

> 「VS2010に付属のライブラリでは、Windows10に対応できない」

Windows 10 の32ビットには対応し、64ビットに対応できないということでしょうか。


念のため、本機の VS2010 をアンインストールし、再インストール(完全インストール)してやってみます
してやってみます。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

本機(Windows 10 Home 64bit)に、VS2010 を再インストールして、MFCアプリの SDIプ
ロジェクトを、ウィザード通りの場合および「スタティック ライブラリで MFC を使用す
る」に変えた場合で、スケルトンをビルドしてみました。
x64 の構成で、どちらもOKでした。

間違った判断材料を提供し、申し訳ありませんでした。

この本機の状態で、”kabuki”プロジェクトを x64 の構成でビルドすると、やはりエラ
ーとなります。
予備機(Windows 10 Home 32bit)でも、同じエラーです。

よって、”kabuki”プロジェクトに問題ありと考えます。

VS2017 Community版もインストールしてみました。
”kabuki”プロジェクトを読み込むと、ソリューション エキスプローラに
「kabuki(利用不可)、プロジェクト ファイルはアンロードされました。」
と表示され、何もすることが出来ません。
VS2010プロジェクトからの自動変換機能は働かないようです。

今後やることは、”kabuki”プロジェクトをゼロからスタートして、少しずつコードを書き
き足しながら、x64構成でビルドしていこうと思います。
エラーが出たときに書き足したコードが原因という判断をしようと思います。

数ヶ月かかりそうなので、この質問は一旦解決とします。

有難うございました。


返信引用
傾奇者
 傾奇者
(@傾奇者)
ゲスト
結合: 14年前
投稿: 35
Topic starter  

追記です。

VS2017 Community のインストールが不完全でした。
MFC がオプションになっていることに気づかずインストールしていませんでした。
MFC を追加インストールしたら、プロジェクト”kabuki”を読み込みましたが、ビルドす
ると次のエラーとなりました。

・・・\kabuki\targetver.h(19): fatal error C1083: include ファイルを開けません。'SDKDDKVer.h':No such file or directory

targetver.h
'SDKDDKVer.h':No such file or directory

targetver.h は自分で入れたものではなく、おそらく VS2008 から VS2010 に移行すると
き自動的に入ったと思われます。

VS2017 Community の存在を知らなかったので、この質問の収穫です。
教えて戴いて感謝申し上げます。

VS2017 Community を使って、”kabuki”の内容をゼロからコーディングして行きます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました