2009-06-26 41 views
3

私はATLCOMプロジェクトをVC6からVS2008に移行しました。私の質問は、どのように私はPSのdllon VS 2008を構築するのですか?VS 2008のプロキシ/スタブDLLの作成

VS2008の新しいATLプロジェクトには、ps dllをビルドする別個のPSプロジェクトがあります。しかし、VC6からの移行はこのプロジェクトを作成しませんでした。

ps mkファイルでnmakeを呼び出そうとしましたが、ソースファイルと自動的にインクルードされたウィンドウヘッダファイルに存在するenum型の再定義エラーが発生します。この解決策では、不要なヘッダファイルを除外するプリプロセッサWIN32_LEAN_AND_MEANを定義してこの問題を解決しました。 nmakeを使って同じことをすることはできますか?

ps dllを作成する他の方法はありますか?

答えて

2

Eranの提案は論理的だと思われますが、彼が話していた項目のいくつかを見つけることができませんでした。だから私は別のアプローチを試みました。

VS 2008でEmpty ATL(Server)プロジェクトを作成しました。これにより、通常のatlプロジェクトと一緒にpsプロジェクトが自動的に作成されます。

psプロジェクトのvcprojファイルを自分のプロジェクトフォルダにコピーし、myprojectname ps.vcprojに名前を変更しました。

私は解決策を開き、新しくコピーしたプロジェクトを追加しました。私はプロジェクト(VS 2008)の名前をmyprojectname psに変更し、既にそれに含まれていたすべてのファイルを削除しました。

次はプロジェクトに私の_i.c、_p.c、dlldata.c .defファイルが含まれています。 リンカ>入力>モジュール定義ファイルの設定で、defファイル名を追加しました。

これだけです!魅力のように働いた。

+0

nb。 ATL COM EXEサーバープロジェクトを作成するときは、「プロキシ/スタブコードをマージする」をチェックしないでください。 Proxy + Stub coudlは別々のDLLに存在するので、このオプションは理にかなっているようです。しかし、プロキシスタブプロジェクトはまったく生成されません。 – peterchen

0

私はそれをやった、とさえ、私は日付の指示に任意のを持っていなかったが、今私は、プロセスを再構築しようとするでしょうバックプロジェクトで見て以来、それはしばらくしている:

  1. PSの新しい空のDLLプロジェクトを作成します。 MFCまたはATLは必要ありません。
  2. プロジェクトに次のファイルを追加します。projの _h.h、PROJ _i.c、PROJ _p.c、PROJ .DEF、プロジェクト設定でdlldata.c
  3. は、追加rpcndr.lib、rpcns4.lib、rpcrt4.lib
  4. プロジェクト設定で、defファイルをモジュール定義ファイルとして指定します。
  5. プロジェクト設定で、[生成するstublessプロキシ]を[はい]に設定します。プロジェクト設定で
  6. 、これは私が私のプロジェクトをpostmortemingから得ることができるものであるサーバープロジェクト

で生成されるようTLBファイルを設定します。私はいくつかのステップをスキップした可能性があり、それを行うためのより良い方法があるかもしれません。 OTOH、私は生成されたPSに何の問題もなく、あなたが行っている間にギャップを埋めることができるかもしれません。これを試してミスを見つけた場合は、将来の参照のためにコメントを追加してください。

+0

ありがとうございます。あなたは、どこに設定でstublessプロキシを生成するのか教えていただけますか? – bobbyalex

+0

別のものは、作成するプロジェクトの種類は何ですか?空のDLLプロジェクトはありません。唯一のものはMFC dllプロジェクトです。 – bobbyalex

+0

"Generate stubless proxy"は、MIDLの一般設定です。空のDLLプロジェクトを作成するには、まずWin32アプリケーションを選択し、アプリケーション設定ページでタイプをDLLとして設定します。がんばろう! – eran

関連する問題