64ビットWindowsで32ビットプログラムをコンパイルしてリンクしようとしています。 私はそれが正常にコンパイルされるのnasmlink.exe、Kernel32.libの64ビット版または32ビット版を選択
nasm -f win32 test.asm
で私のプログラムをコンパイルしました。私はLINK.EXE
link /entry:start /subsystem:console test.obj Kernel32.lib
または
link /machine:x86 /entry:start /subsystem:console test.obj Kernel32.lib
とリンクしようとすると、しかし、それは私に、このエラーを与える:
C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64\Kernel32.lib : warnin
g LNK4272: library machine type 'x64' conflicts with target machine type 'X86'
test.exe : fatal error LNK1120: 3 unresolved externals
しかし、私は、カーネル32の32ビットバージョンの絶対パスを書きます.libは正常にリンクします。私はパス変数として32bit Kernel32.libの場所をどこかに追加すべきだと思うか、スイッチを使うべきだが見つけられない。
絶対パスを書き込まないとリンクする方法はありますか?
'/ libpath'を使用してパスを設定しますか? –
はい、動作しますが、私はこの情報をリンカに永久に与えようとしています。 (環境変数として)。リンカーは.objファイルが32ビットであることを理解しなければならず、32ビットバージョンのライブラリを検索する必要があります。なぜ私のコンピュータでこれが起こっているのかわかりません。 VSとWindowsは他のコンピュータと同じですが、私にとっては唯一のことです。そして、私は他のプロジェクトのリンカー設定を変更していないことを確信しています。(私もdumpbinで.objファイルヘッダーをチェックしてあり、それらは32ビットです) – ApprenticeTheSecond
解決策を質問に編集しないでください。受け入れられた回答に対するあなたのコメントは、そのコメントが属する唯一の場所です。 –