我想在c#console應用程序中動態地加載一個COM
dll。在c中加載一個com DLL#
直到現在我曾嘗試下面的代碼:
// load exe with args as EXE DllName classNameTobeLoaded
try
{
// load assembly
Assembly Dll = Assembly.LoadFile(@"C:\My_Dir\TestComDll.dll");
// get the type names
foreach(Type t in Dll.GetExportedTypes())
{
dynamic vClassLoaded = Activator.CreateInstance(t,"Test");
Console.WriteLine("Type Loaded");
}
Console.WriteLine("DLL is loaded");
}
catch (Exception ex)
{
Console.WriteLine("Unable to load a DLL because \n" + ex.Message);
}
但同時加載的dll我得到的錯誤爲:
{System.BadImageFormatException: The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence)
at System.Reflection.Assembly.LoadFile(String path)
at ThirdPartyDLLLoader.Program.Main(String[] args) in h:\Test Exe\ThirdPartyDLLLoader\ThirdPartyDLLLoader\Program.cs:line 18}
相同的代碼爲.NET DLL
工作的罰款。
任何人都可以告訴我爲什麼代碼無法動態加載COM DLL嗎?
如果不是,你可以告訴我怎樣才能做到這一點。
感謝您的任何建議和幫助。
您必須使用[Tlbimp.exe](https://msdn.microsoft.com/en-us/library/tt0cf3sx%28v=vs.110%29.aspx)創建包裝。 – Filburt
COM的工作方式與.NET不同。 TestComDll.dll在加載之前註冊了嗎? – Dennis
@丹尼斯是的我已經在加載之前註冊了dll –