現在、COMクラスラッパーを使用してC#から呼び出しているアンマネージDLLがあります。DLLを登録せずにC#でComInteropを使用して管理されていないDLLをマーシャリング
[ComImport(), Guid("75E81043-CAD5-11D3-800D-00105A5E2FA0")]
public class MyObject { }
[ComImport(), Guid("75E81042-CAD5-11D3-800D-00105A5E2FA0"),
InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface MyInterface
{
string EncryptString([In, MarshalAs(UnmanagedType.BStr)] string bstrOrginal);
}
は、次に呼び出すために:私は期待どおり
MyInterface obj = (MyInterface)new MyObject();
string crypt = obj.EncryptString("something");
をこれは動作しますが、戻り値があります。ただし、dllはregsvr32に登録されている必要があります。
私はregsvr32を必要とせずにこれを行う方法を探しています。好ましくは、dllのコピーを入手するだけです。注目すべきことは、アンマネージドDLLのソースと、必要に応じてそれを変更する機能があることです。
正しい方向に押していただければ幸いです。
これは役立つかもしれません:http://msdn.microsoft.com/en-us/library/windows/desktop/ms694515(v=vs.85).aspx –
私は読むことがたくさんありますが、私はこれを試してみてください。ありがとうございました。 – Jon