2009-05-07 32 views
2

恐竜が現れる危険性があるので、Borland C++でコンパイルされたいくつかの古いC++コードがあります。これは、レジスタを設定し、現代化したいAssemblerモジュールへのインタフェースです。私はMS VC++ Expressをインストールしましたが、多くのことはうまくいきません!デフォルトはWin32だと思われますので、FARとHUGEを消去しました。パスカルは__stdcallにマップされているようです。 THRCOMPは、モジュール名の前に行くところだから私は、マクロ古いBorland C++からVisual C++ Expressへの移行

#define THRCOMP extern "C" int FAR PASCAL _Export 

を持っています。コンパイラが好きで、「時代錯誤」に関するメッセージを出していない

extern "C" int __stdcall _Export <modname>; 

のようなものでこれはおそらく結果(何を言っていません!)。なにが問題ですか?

また、古いコードセットには、個別にコンパイルされたサブルーチンになる必要のあるインラインアセンブラがあります。(無料の)アセンブラがあり、C++でアセンブラobjデッキをリンクできますか?

ところで、私は自分のobjデッキを見ることができませんが、WinZipはそれらをピックアップしました!説明?

一般的に古いC++コードを移行するガイドがありますか?

ありがとうございます。

答えて

1

あなたの例から、特定の物事のカップル:

  • VCは全く_Exportが好きではありません。
  • 時代錯誤は、データ宣言に修飾語(__stdcallなど)があることです。 <modname>に括弧がない場合は、データ宣言であり、修飾子は何もしません。 <modname>がアセンブリで実装された関数である場合でも、引き数に引数リストを含める必要があります。たとえば、

extern "C" int __stdcall modname(int x); 

あなたはWindows Driver Kit(WDK - DDKと呼ばれるように使用したもの)から無料でアセンブラを得ることができますが、あなたがしている場合、現在のコードは、BorlandのTASMコンパイラを使用して書かれていますそれは同じ構文を使用していない可能性がありますので、それを移植する作業がかなりあるかもしれません。しかし、現在のアセンブラが16ビットコードであれば、とにかく32ビットアセンブラに移植する作業がたくさんあるでしょう...

+0

ご回答ありがとうございます! _exportが問題でした!どのようなアイデアが私のobjファイルに起こった?前もって感謝します。 –

+0

「私のobjデッキを見ることができません」という意味はよく分かりません。 –

+0

生成されたAsmを表示するオプションを変更しました。objデッキが表示されます。 Winzipは前にそれらを選んだが、Windowsエクスプローラで見ることができなかった - まだOKだと思う:)まだいくつかの奇妙さがあるが、最終的にそれらを追跡することを望む... Thx。 –

関連する問題