当前位置: 代码迷 >> VC >> dll跟test.exe放在一起,否则就会报“System.IO.FileNotFoundException”
  详细解决方案

dll跟test.exe放在一起,否则就会报“System.IO.FileNotFoundException”

热度:1123   发布时间:2013-02-25 00:00:00.0
C++使用C#创建的DLL,C#的DLL只能放在C++生成的EXE同目录下吗?
由于项目需要,我需要使用C++的代码来调用C#产生的DLL。我写的试验代码如下:
C#,创建一个C#的类库项目,代码如下:
C# code
using System;namespace TTest{    public class Test    {        public Test() {}        public void test()        {            Console.WriteLine("Hello!!");        }    }}


C++,创建一个CLR控制台项目,代码如下:
C/C++ code
#using "TTest.dll"using namespace TTest;int main(){    Test ^obj = gcnew Test();    obj->test();    return 0;}


C++代码中#using后边引用的dll就是C#生成的,这里写相对路径或绝对路径,只要能找到那个dll就行。在这里我是将TTest.dll直接拷贝到C++的代码目录中。
将C#生成的dll(TTest.dll)拷贝到C++生成的exe(test.exe)的同目录下,运行没有问题。

但问题是,只能将TTest.dll跟test.exe放在一起,否则就会报“System.IO.FileNotFoundException”的异常。我试过将TTest.dll放在Path环境变量定义的目录中,甚至直接放在Windows目录中,但都不行。我也试过用RegAsm注册TTest.dll,但只要TTest.dll不跟test.exe在同一目录下,都会出错。

我的试验代码可以放一起,但真正的项目中是不能这么放的。
有没有人知道,这种情况下TTest.dll应该放在什么样的目录下?或是做什么样的处理?

------解决方案--------------------------------------------------------
msdn 查全局程序集
  相关解决方案