Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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++ exe如何定位一个C DLL? 我试图运行一个使用C DLL的C++应用程序。 我创建了一个CLR包装类,以便C++ exe可以加载C DLL。 当我从c dll所在的同一目录运行exe时,应用程序运行正常_C#_C++_Dll_Clr - Fatal编程技术网

C# C++ exe如何定位一个C DLL? 我试图运行一个使用C DLL的C++应用程序。 我创建了一个CLR包装类,以便C++ exe可以加载C DLL。 当我从c dll所在的同一目录运行exe时,应用程序运行正常

C# C++ exe如何定位一个C DLL? 我试图运行一个使用C DLL的C++应用程序。 我创建了一个CLR包装类,以便C++ exe可以加载C DLL。 当我从c dll所在的同一目录运行exe时,应用程序运行正常,c#,c++,dll,clr,C#,C++,Dll,Clr,但是,我想做的是将我的应用程序的所有DLL放在另一个目录中。 所以我的问题是: 我如何将C DLL放到我的C++应用程序所在的不同目录中,并使EXE加载DLL?< /P> 我相信有一个选项可以使用配置文件,但我不明白这到底是如何做到的 有人能解释一下实现方法吗?如果dll的目录是可执行文件的子目录,您可以使用app.config: <configuration> <runtime> <assemblyBinding xmlns="urn:schem

但是,我想做的是将我的应用程序的所有DLL放在另一个目录中。 所以我的问题是:

<>我如何将C DLL放到我的C++应用程序所在的不同目录中,并使EXE加载DLL?< /P> 我相信有一个选项可以使用配置文件,但我不明白这到底是如何做到的


有人能解释一下实现方法吗?

如果dll的目录是可执行文件的子目录,您可以使用app.config:

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <probing privatePath="dll_subdirectory_name"/>
      </assemblyBinding>
   </runtime>
</configuration>

这强烈地吸引了程序员的注意力,我们都喜欢对事物进行分类,但如果这是一个本地DLL,也没什么不同。操作系统绝对不喜欢在一个不寻常的地方找到一个新的操作系统。CLR也会这样做。DLL地狱是一个你永远不想故意制造的棘手问题。如果EXE是在C中创建的,则CLR仍会查找appname.EXE.config文件。在C++中创建AppNAME.EXE并不重要。同样地,它们必须位于子目录中才能进行探测。在我的例子中,c dll不是位于子目录中,而是位于上层目录中。有没有办法配置它?这是比较棘手的。您可以使用,但应该对程序集进行签名。我尝试使用元素失败。我相信原因是href元素是必需的。我的dll位于我的本地主机中的c:\。使用此元素的示例引用:URL,运行时可以在其中找到指定版本的程序集。。因此,如果我希望应用程序使用位于我的c:\?…下的dll,我如何在app.config中引用它?