我有我目前利用COM类包装C#调用非托管DLL。编组在通过ComInterop C#非托管的DLL而无需注册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 – 2012-01-06 01:18:23
我有很多的阅读工作要做,但我会试试这个。谢谢。 – Jon 2012-01-06 01:56:23