由于项目需要,我需要使用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 查全局程序集