Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何加载C++;C#项目中同名DLL 我有两个同名的C++ WiNAPI(只有X64 CARD)DLL,其中包含一些项目的API,例如C:\第一个MyDll.dll和C:\BaseMyDL.DLL。 在我的情况下,我不能重命名它。 因此它们无法加载到引用管理器中,因为它们具有相同的名称_C#_C++_Dll_Runtime_Badimageformatexception - Fatal编程技术网

如何加载C++;C#项目中同名DLL 我有两个同名的C++ WiNAPI(只有X64 CARD)DLL,其中包含一些项目的API,例如C:\第一个MyDll.dll和C:\BaseMyDL.DLL。 在我的情况下,我不能重命名它。 因此它们无法加载到引用管理器中,因为它们具有相同的名称

如何加载C++;C#项目中同名DLL 我有两个同名的C++ WiNAPI(只有X64 CARD)DLL,其中包含一些项目的API,例如C:\第一个MyDll.dll和C:\BaseMyDL.DLL。 在我的情况下,我不能重命名它。 因此它们无法加载到引用管理器中,因为它们具有相同的名称,c#,c++,dll,runtime,badimageformatexception,C#,C++,Dll,Runtime,Badimageformatexception,DLLImport只能加载方法,但我需要加载一些COM接口、GUID等 你有什么想法 提前感谢大家创建两个类项目,并在每个类中放置一个。不确定执行所需操作的正确方法,但程序集.Load*方法(以及程序集类型本身)用于加载托管程序集。您想加载一个natove程序集。可能System.Runtime或System.Runtime.InteropServices命名空间中的某些内容会有所帮助。或者,您可以创建另一个非托管dll并使用它加载所需的dll。。。或者可以在C++/CLI项目中使用非托管/本机

DLLImport
只能加载方法,但我需要加载一些COM接口、GUID等

你有什么想法


提前感谢大家

创建两个类项目,并在每个类中放置一个。不确定执行所需操作的正确方法,但
程序集.Load*
方法(以及程序集类型本身)用于加载托管程序集。您想加载一个natove程序集。可能System.Runtime或System.Runtime.InteropServices命名空间中的某些内容会有所帮助。或者,您可以创建另一个非托管dll并使用它加载所需的dll。。。或者可以在C++/CLI项目中使用非托管/本机内容来加载它们。正如@paramecium指出的,只有托管程序集(即具有程序集清单的程序集)可以使用
assembly.load*
加载。通常,如果要调用非托管代码,可以使用COM互操作或P/Invoke(调用导出的C函数)。您试图调用什么以及如何调用?P/Invoke export-only方法,我需要来自dll(接口、UUID等)的关于COM Interop的所有数据。Interop将重新创建两个类项目,并在每个类中放置一个。不确定执行所需操作的正确方法,但
Assembly.Load*
方法(以及程序集类型本身)用于加载托管程序集。您想加载一个natove程序集。可能System.Runtime或System.Runtime.InteropServices命名空间中的某些内容会有所帮助。或者,您可以创建另一个非托管dll并使用它加载所需的dll。。。或者可以在C++/CLI项目中使用非托管/本机内容来加载它们。正如@paramecium指出的,只有托管程序集(即具有程序集清单的程序集)可以使用
assembly.load*
加载。通常,如果要调用非托管代码,可以使用COM互操作或P/Invoke(调用导出的C函数)。您试图调用什么,以及如何调用?P/Invoke仅导出方法,我需要从dll(接口、UUID等)读取有关COM互操作的所有数据