首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET Framework >

C++使用C#创建的DLL,C#的DLL只能放在C++生成的EXE同目录上吗

2012-08-17 
C++使用C#创建的DLL,C#的DLL只能放在C++生成的EXE同目录下吗?由于项目需要,我需要使用C++的代码来调用C#产

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应该放在什么样的目录下?或是做什么样的处理?

[解决办法]
反射调用 - - 取相对路径 或者注册成COM
[解决办法]
老贴

热点排行