首页
社区
课程
招聘
[旧帖] 非托管程序2次开发,如何连接调用C#写的DLL 0.00雪花
发表于: 2011-5-1 18:18 4818

[旧帖] 非托管程序2次开发,如何连接调用C#写的DLL 0.00雪花

2011-5-1 18:18
4818
就是在别人的程序上进行2次开发的时候,怎么做接口连接调用C#写的DLL

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
C/C++Code :

[font=Fixedsys][color=#000000]HMODULE Dll [/color][color=#000080]= [/color][color=#000000]LoadLibraryA [/color][color=#000080]( [/color][color=#000000]Dll路径 [/color][color=#000080]);
[/color][color=#000000]FunctionCall Fun [/color][color=#000080]= [/color][color=#000000]GetProcAddress [/color][color=#000080]( [/color][color=#000000]Dll[/color][color=#000080], [/color][color=#000000]函数名字 [/color][color=#000080]);[/color][/font]

2011-5-2 10:50
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
现在是别人的原程序我没有原代码的啊,我是用添加输入表函数的方法,再调用DLL,但C#是运行在NET框架上的,好像这种方法不能直接调用C#写的DLL,用什么好方法没啊
2011-5-5 17:57
0
雪    币: 43
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
1 假如一个C# DLL,代码如下:
namespace CSLib
{
    public class Class1
    {
        private string name;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = "Your Name: " + value;
            }
        }
    }
}
2 C++客户程序,是个控制台应用,代码:
#using "..\debug\CSLib.dll"
using namespace CSLib;
int _tmain(int argc, _TCHAR* argv[])
{
Class1 ^c = gcnew Class1();
c->Name = "zzj";
printf("%s\n", c->Name);
return 0;
}
3 几点要记住:
1 使用#using引用C# DLL,而不是#include。
2 别忘了using namespace CSLib;
3 使用C++/clr语法,采用正确的访问托管对象,即:使用帽子'^',而不是星星'*'。

另外,没有源代码没关系,用Reflector即可看到,下载链接请Google之。
2011-5-6 11:44
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵,可能是我只有初中文化底子,所以表达能力不是很好,楼上的方法是说在C++程序(有原代码)里怎么调用C#DLL程序,我知道可以这样做,就是在我要修改的程序里(没原代码)添加自己定义的输入表函数,然后用C++写要自己定义的函数DLL,在C++DLL里再用楼上的方法调用C#的DLL,但我现在是想直接在人家的程序上调用C#DLL,怎么实现啊?其实这跟DLL注入有点相似
2011-5-6 16:40
0
雪    币: 43
活跃值: (23)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个真不会。。。貌似很高深滴样子。不晓得有木有这样的技术,找大牛问下,我观望中……
2011-5-7 19:54
0
游客
登录 | 注册 方可回帖
返回
//