2010-11-23 4 views
0

掲示される:月2010年11月22日の午前2時30分午前の記事の件名:C++プロジェクト
こんにちは、リンクのWindowsの.objファイル/ NASM

Iとアセンブリオブジェクトをリンクする方法私のC++プログラムとアセンブリプログラムをリンクしようとしています。私はNASMを使って "nasm -fobj myprogram.asm"コマンドで.objファイルを生成しています。 .objファイルが作成されましたが、これを私のプロジェクトにリンクする方法がわかりません。 Linker-> Dependenciesにファイルを追加しようとしましたが、私の外部アセンブリ関数が定義されていないというエラーが表示されます。たぶん.objファイルが間違ったディレクトリにあります(ルートプロジェクトフォルダ内に.cppファイルとともにあります)。

アセンブリ言語の.objファイルをプロジェクトにリンクする方法について簡単に説明できますか?

おかげで、 -κB

答えて

0

を使用すると、アセンブラコードに適切な名前をマングルていることを確認します。 IIRCでは、__stdcallはデフォルトで32ビットMSVCで使用され、アンダースコアの先頭に@を付けて@ [引数のバイト数]を付加します。 したがって、size_t strlen(const char *str)、コンパイル済みの場合は__stdcallが [email protected]にマングルされます。

詳細については、hereまたはhereを参照してください。

+0

私がNASM/GCCについて見つけた唯一の情報は、ASMファイルの関数名にアンダースコア(_)を付ける必要があることを示しています。しかし、それは役に立たない。私はNetBeansにファイルを適切にリンクする方法を教えていないと感じていますが、私はこれをかなり新しく知っています。私は、リンカの依存関係にmyprojgram.objファイルを追加すると、ファイルをリンクするNetBeansフォーラムの投稿に従った... – enoculus

+0

@enoculous objdump(またはあなたのプラットフォームがobjファイルを見るために使用するもの)を使用して、 objs内にあり、ここにコードを埋め込んだコンパイラスイッチや関連する呼び出し規約などを投稿して、私が理解できるかどうかを確認します。 – JimR