2010-05-16 64 views
0

我有一个工作在一个C#项目,我通过互操作服务呼叫工作的C + + DLL。我创建了另一个C#项目,并试图调用相同的.dll文件,但不断收到一条通用的错误消息,声明无法找到.dll,两个项目都是.net 2.0。什么文件夹,以及我在项目中指定的位置,我应该放入.dll文件以便项目可以找到它?c#项目找不到C++ .dll?

把它当作我的一个提醒...

在以前的项目中,我并没有对它的引用,我只是它的/ bin文件夹和做同样的事情为这个项目做不行。

感谢R.

+0

您是否已将C#项目中的项目引用添加到C++项目中? – 2010-05-16 22:54:16

+0

你不能这样做 – 2010-05-16 23:02:58

+0

@Ion Todriel:我假设他的意思是C++/CLI - 也许我应该更加明确。如果它是本机C++,那么他不会谈论互操作。 – 2010-05-16 23:07:11

回答

2

确保所讨论的DLL所依赖的所有DLL都与使用该DLL的exe在同一目录中。

0

把C++在C#项目的输出目录(原生)DLL,Bin \ Debug或使

+1

或者只需添加一个将自动复制DLL的项目引用。 – 2010-05-16 23:08:27

0

就只要你把你的工作目录的位置你应该没有问题的DLL。

转到Debug选项卡上的项目属性,并将工作目录设置为包含您的DLL的目录。

0

我通常将DLL作为文件添加到项目中,并将其复制到较新的文件中。

0

C#dll尝试通过相对路径访问unmanged dll的过程与加载dll的任何进程相同 - 也就是说该文件必须与可执行文件位于相同的目录中,或者位于定义的路径之一中进程'PATH变量。

为了让您的视觉Ssolution做自动为您有事情号码,你可以这样做:

  1. 添加非托管的项目为C#项目的依赖。这会将DLL复制到C#可执行文件的路径中。

  2. 将C++项目的输出路径更改为c#可执行文件的输出路径。

  3. 构建C++项目并将该dll作为链接添加到C#项目。在其属性中设置以复制到输出目录。