CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

我就不信邪!难到大家都没有遇到过这样的问题?

楼主shiyubeijing()2006-05-02 21:18:34 在 .NET技术 / C# 提问

不知大家有没有在学C#以前用vc++6写过DLL,现在想在c#中重用这个Dll,你却发现在VS.NET中不能直接调用了,因为有了托管和非托管的区别!!由于这个dll实现了很复杂的功能不可能重写,或者你用的是别人的复杂的Dll,怎么样才能把这个Dll用起来呢?  
          平台调用(用DllImport)可以把Dll中的函数导出来,但是这远远不够,也许Dll导出的是一个类,类中还有很多的变量、结构,怎样把这个Dll的类也导出来让我们重用呢?  
          我觉得这是在从c++到.NET转变过程中大家肯定会遇到的问题,但是怎么没人知道呢?连Knight94(愚翁)   也说这比较麻烦,但终归有什么解决的办法呢?看了不少的平台调用的文章,还有MSDN都是反复讲怎么把Dll中的导出函数重用,怎么才能把函数的导出类引进到c#里呢?!极度郁闷中。。。 问题点数:20、回复次数:3Top

1 楼diandian82(点点(nothing))回复于 2006-05-02 21:47:31 得分 20

结构也需要重写的,用C#的   变量类型   重新声明一遍,然后当成参数传进去就行了Top

2 楼shiyubeijing()回复于 2006-05-02 21:50:02 得分 0

或者我更具体的说,下面的例子应该能比较准确的反映我的问题:  
  例如VC++6.0写的Dll如下:  
   
  //VCDll.h  
  class   _declspec(dllimport)   Point  
  {  
  public:  
  void   add(int   x,   int   y);  
  int   result;  
  };  
   
  //VCDll.cpp  
  #include   <Windows.h>  
  #include   <Stdio.h>  
  #include   "OutClassDll.h"  
   
  void   Point::add(int   x,   int   y)  
  {  
  result   =   x+y;  
  }  
  看看这个简单的例子,Dll导出的是一个类。我如果想用add方法仅仅用PInvoke是不行的!!因为add方法不返回结果,而是改变了Dll中类的成员变量!!  
  怎么样才能在C#中既利用add方法又能把结果result得到呢?  
  Top

3 楼shiyubeijing()回复于 2006-05-02 21:53:28 得分 0

diandian82(点点)说的:“用C#的   变量类型   重新声明一遍,然后当成参数传进去就行了”在这里行吗?我在c#中声明一下result,但是怎么传到add函数里呢?  
  我是新手,没有多少积分可用了,不然我一定给大家多一点分!汗。。。Top

相关问题

关键词

得分解答快速导航

  • 帖主:shiyubeijing
  • diandian82

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo