2012-03-06 15 views
3

WindowsのVSコマンドプロンプトに実行可能ファイルといくつかの関連するDLLを作成しようとしています。プロジェクトにはsconsファイルが付属しているので、単にVS Cmd Promptにsconsをタイプするだけです。Visual Studioコマンドコンパイラは64ビットコンパイルを強制します

実行ファイルは、「x86」VS Cmdプロンプト内にビルドされています。しかし、実行ファイルが32ビットではない(タスクマネージャで確認されている)。私の同僚は、64ビットマシンで、sconsファイルを使用して同じ正確なプロジェクトを構築し、実行ファイルはコンピュータ上で32ビットです。 (もう一度、タスクマネージャで確認)

のdllのは、32ビットのJVMによってロードされている、と彼らは64ビットあるとして、彼らはエラーをスローします。私の同僚のDLLはそうではありません。

私のコンピュータは、環境VSの「x86」の内部で64ビットのビルドを強制され、なぜ私たちは把握することはできません。誰にも何か提案はありますか?

P. - 私はMS VS 2010を持っていて、MS VS 2010 Expressを持っています。

P.S. - 私は64ビットのPythonを持っているので、私のsconsも64ビットです。しかし、私の同僚もそうです。

+0

VS Expressは、64ビットのビルド行いませんので、あなたの同僚が構築その理由は説明して、32ビットです。 PCのVSコマンドプロンプトに 'cl'と入力します。最初の出力行は 'for 80x86'または' for x64'で終わるべきです。 – arx

+0

それは80x86のための32ビットを言う – Constantin

+0

それから私は考えていない! – arx

答えて

6

sconsのは、通常はそれがインストールされて見つけることができるものに基づいて(あなたはそれが明示的に指定しない場合)を使用するどのようなツールチェーン(すなわち、コンパイラ)を決定するであろう。

Visual Studio 2010 Expressは、64ビットWindowsでも32ビットのバイナリしか構築できないため、Sconsの場合と同じです。 Visual Studio 2010では、32ビットと64ビットの両方のコンパイラが利用可能な「ノンエクスプレス」で、Sconsはおそらく64ビットのWindows上で64ビットのビルドを行うことになります。

Sconsプロジェクトの32ビットまたは64ビットビルドを指定するには、それぞれTARGET_ARCHを 'x86'または 'x86_64'に設定します。 Scons Construction Variablesも参照してください。

1

エスコフの代わりのソリューションとして、SConsに環境変数PATHを使用させることができます。コマンドプロンプトでclと入力したときと同じコンパイラを使用します(これは、 Visual Studioで提供されている適切なコマンドプロンプトのショートカット)。これを行うには、外部環境のPATH変数には、例えば、あなたのSConsは建設環境への伝播:

import os 
env = Environment(ENV = {'PATH' : os.environ['PATH']}) 

this FAQ entrythis section of the documentationを参照し、次の警告に注意してください。外部環境変数を伝播させることによって、もちろん

を ビルドでは、外部の 環境の変更が意図しない方法でビルドに影響を及ぼす危険性があります。

関連する問題