我想在我的x64 C#应用程序中使用x86 dll!
在论坛上,我读到使用COM对象可以帮助我实现这个目的!这是我的ComServerSample。它被编译为x86。
[ComVisible(true)]
public class MyComServer : IMyComSample
{
private dahuaIp.fDisConnect dissconn;
public void con(int lLoginID, StringBuilder pchDVRIP, int nDVRPort, int dwUser)
{
}
public string GetString()
{
dissconn = new dahuaIp.fDisConnect(con);
var zdsc = dahuaIp.CLIENT_Init(dissconn, 0);
return zdsc.ToString();
}
}
[ComVisible(true), Guid("DBE0E8C4-2222-41f3-B6A4-4E2F353D3D05")]
public interface IMyComSample
{
string GetString();
}
这是一个使用此组件服务器的测试应用程序。
Type CSI = Type.GetTypeFromProgID("ComServerSample.MyComServer");
var COMobj = Activator.CreateInstance(CSI);
MethodInfo method = CSI.GetMethod("GetString", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
var sdfc = method.Invoke(COMobj, null);
当测试应用程序是x86时,这两个应用程序都可以正常工作!但是当测试应用程序是x64时,会出现以下错误:
由于以下错误,无法为具有CLSID {7B9F9A71-8E1B-3470-8A79-EEB4DA9B25A4} 的组件获取COM类工厂: 80040154 类未注册 (来自HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。
如何解决这个问题?我需要在x64应用程序中使用我的x86 dll!
regsvr32
注册了 DLL 文件? - Alex