C# 在c中加载com DLL#
我想在c#控制台应用程序中动态加载C# 在c中加载com DLL#,c#,.net,dll,com,C#,.net,Dll,Com,我想在c#控制台应用程序中动态加载COMdll 到目前为止,我已经尝试了以下代码: // 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(
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}
同样的代码在.NETDLL
上运行良好
有人能告诉我为什么代码不能动态加载COM dll吗
如果不是,你能告诉我怎么做吗
谢谢你的建议和帮助。这是办不到的。
Assembly.LoadFrom
方法用于加载.NET程序集。COM库必须注册,然后您可以使用Activator.CreateInstance
方法实例化类
以下是我访问MS Word的方式:
Type type = Type.GetTypeFromProgID("Word.Application");
object obj = Activator.CreateInstance(type);
我有一个加载类库dll的函数
public ICollection<Assembly> GetAssemblies(string pathOfDLL)
{
List<Assembly> baseAssemblies = AppDomain.CurrentDomain.GetAssemblies().ToList();
var controllersAssembly = Assembly.LoadFrom(pathOfDLL);
baseAssemblies.Add(controllersAssembly);
return baseAssemblies;
}
public ICollection getAssembly(字符串pathOfDLL)
{
List baseAssemblys=AppDomain.CurrentDomain.GetAssemblys().ToList();
var controllerassembly=Assembly.LoadFrom(pathOfDLL);
BaseSassemblies.Add(controllersAssembly);
返回基座组件;
}
希望有帮助 您必须使用.COM创建一个与.NET不同的包装器。加载前是否注册了TestComDll.dll?@Dennis是的,我以前注册过dllloading@Filburt我也有一个tlb,但没有使用Tlbimp.exe创建任何CLR程序集