2

単一の.cppファイル(ネイティブコードとマネージコードの両方を含む)をより大きなC#プロジェクトに結合することに興味があります。数行のコードでDLL全体を「無駄にする」のはばかげているように見えるため、またコードにはセキュリティ機能があり、難読化したいため、CPPコードに個別のDLLを使用したくありません。より大きなアセンブリ内にそれを隠すことによってビット。(そして、誰かがそれを提案する前に、ILmergeまたはALはネイティブコードでは機能しないため、使用できません。)

.cppおよび.csファイルのグループをコンパイルする基本的なプロセスは数回カバーされています。主要な候補者の提案は次のようです。

ただし、これらの両方(および私が見つけたすべての関連リンク)は、コマンドラインでの構築のみを扱います。

既存の.csprojファイルを変更してC++コードでコンパイルおよびリンクすることをお勧めします(C ++ビルド自体が別の.vcprojにあることは問題ありませんが、そうでない場合は良いですが、リンクは.csprojにある必要があります)、そしてすべてをVS2008内からビルド可能にして、プロジェクトのユーザーが違いを知る必要がないようにします。

残念ながら、VSによってコンパイルされている.csproj内からlink.exeを正常に呼び出すことができないようです。「link」を含む「Exec」要素は、PATHにないため、実行可能ファイルを見つけることができません。場所を明示的に指定すると( "$(DevEnvDir).... \ VC \ bin \ link")、実行が開始されますが、必要なライブラリを読み込めないことを示すエラーコードですぐに失敗します(おそらく、 PATHにはありません)。

Visual Studio内からcsprojからLINKへの呼び出しが成功した例はありますか?


編集:わかりました、私は今その問題を回避することができました、そしてすべてがコンパイルされ、リンクされ、そして正常に実行されています-リリースモードで。デバッグモードでも正常に実行されているように見えますが、何らかの理由で、そのSxSマニフェスト(LINK生成されますが、を介して手動で適用する必要がmtありました)は、DebugCRTではなくリリースCRTのみを参照します。それを修正する方法はありますか?

4

1 に答える 1

0

Debug 構成を使用してビルドされた obj および lib ファイルを使用してリンクする場合、DebugCRT を参照する必要があります。

コマンドラインはどのように見えますか?

于 2011-12-17T12:48:50.803 に答える