私はすべてのソースコードを持っていない既存のDLLをプロキシしようとしています。私は、Visual Studioプロジェクトを作成し、正常にそれを構築することができた、それを使用して私のdllと他のDLLの署名を一致させるために最低限必要なものは何ですか?
https://github.com/mavenlin/Dll_Wrapper_Gen
:私はここで見つけるツールを使用しています。ただし、元の実行ファイルを実行すると、 "badimageFormatException"の例外がスローされます。ここで別の質問で、何か役に立たないコメントが返ってきたのですが、私はプロキシdllとオリジナルの間の本質的な違いだと思っていました。 corflags.exeツールを使用して
(VSから、またDUMPBINはあまりにも適切な機能を持っているように見えますが、私はそれらを把握することができませんでし)、私は元のために次のような出力が得られます。
C:\Users\jo\fml2>"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\Co
rFlags.exe" fml.dll
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v1.1.4322
CLR Header: 2.0
PE : PE32
CorFlags : 0
ILONLY : 0
32BIT : 0
Signed : 0
私は、プロキシのdllで同じツールを使用している場合は、私はこれを取得:
corflags : error CF008 : The specified file does not have a valid managed header
私はそれはそれを一致させるために自分のコードに追加する必要がありますか?
これはManaged C++で記述された混合モードの.NETアセンブリです。それは.NET 1.1をターゲットにしており、そのようなアセンブリを構築するにはVS2003が必要です。あなたが気にかけなかった部分は管理されたインターフェースです。 Reflectorのようなまともな逆アセンブラはそれを逆コンパイルすることができます。 –
これは既に説明したとおりです。 DLLは管理されていませんが、ターゲットは管理DLLをロードする必要があります。 –
@HansPassantこれを構築するにはVS2005または2008を入手する方法はありますか?私は両方にアクセスでき、2003年も古代の墓のどこかで失われているかもしれません。 –