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

接口函数,dll文件调用问题。谢谢

楼主xuehuavbnet(雪花)2005-08-02 18:57:11 在 .NET技术 / VB.NET 提问

我自己有vc编写的dll,  
  h文件中的说明是:  
  extern   "C" __stdcall   void   Add(double   a,double   b,double   *c);  
   
  extern   "C"   void   __stdcall   RPJLinePosition(BYTE*   bpSrc,   long   Width,   long   Height,  
  double   *ty,   double   *by,   TS_RECT   *tsRect);  
  输入图像数据*bpSrc,width,height是图像的高和宽,  
  ty,by是需要返回的2个数据,TS_RECT使自己定义的一个结构  
  typedef   struct   {  
      long   Left,   Top;  
      long   Right,   Bottom;  
  }TS_RECT;  
   
  我在vb.net中如下定义  
   
  <StructLayout(LayoutKind.Sequential)>   Public   Structure   TS_RECT  
          Dim   Left   As   Long  
          Dim   Top   As   Long  
          Dim   Right   As   Long  
          Dim   Bottom   As   Long  
  End   Structure  
    Declare   Auto   Function   RPJLinePosition   Lib   "RPJTextureLine.dll"   (ByVal   btSrc   As   Long,   _  
                  ByVal   nWidth   As   Long,   ByVal   nHeight   As   Long,   ByRef   ty   As   Double,   _  
                  ByRef   by   As   Double,   ByRef   tsRect   As   TS_RECT)  
   
          Declare   Sub   Add   Lib   "RPJTextureLine.dll"   (ByVal   a   As   Long,   ByVal   b   As   Long,   ByRef   c   As   Long)  
         
  End   Class  
  问题1。为什么我不能够直接定义long型,会产生“未将对象的引用设置到对象的实例上”  
  我的程序源代码是:  
      Dim   lpSrc   As   Long  
                          Dim   nWidth   As   Long  
                          Dim   nHeight   As   Long  
                          Dim   ty   As   Double  
                          Dim   by   As   Double  
                          Dim   Radius   As   Double  
                          lpSrc   =   AxMImage1.HostAddress  
                          nWidth   =   AxMImage1.SizeX  
                          nHeight   =   AxMImage1.SizeY  
   
                          Dim   tsRect   As   TS_RECT  
   
                          tsRect.Bottom   =   nWidth   -   1  
                          tsRect.Left   =   0  
                          tsRect.Right   =   nWidth   -   1  
                          tsRect.Top   =   0  
                          ty   =   Nothing  
                          by   =   Nothing  
   
                          TLVC.RPJLinePosition(lpSrc,   nWidth,   nHeight,   ty,   by,   tsRect  
   
  问题二:我全部都定义成inter型时,ty,by只能够返回一个ty,by的地址是0000000  
  谢谢帮忙 问题点数:100、回复次数:7Top

1 楼Jockey()回复于 2005-08-02 19:42:09 得分 0

RPJTextureLine.dll   注册了没有?Top

2 楼sx_lxh(路漫漫)回复于 2005-08-02 22:19:31 得分 0

long试着全换成integerTop

3 楼Yiqun_Zhao(蓝帆·雨轩 MS MVP)回复于 2005-08-03 07:53:09 得分 0

注册您自己的.dll文件、把Long改成Single看看。Top

4 楼cyczl666(蔡蔡)回复于 2005-08-03 07:56:33 得分 0

http://blog.csdn.net/cyczl666/archive/2005/07/10/419280.aspxTop

5 楼xuehuavbnet(雪花)回复于 2005-08-03 08:35:56 得分 0

注册?怎么注册哦?我不知道了,  
  如果全部改成integer型数据的话可以进行运算,但是第二个ByRef的值返回不了。  
  跟踪到原来程序代码中第一个   ty,计算出来的值是233.890...可是返回的时候变成了一个80000的天文数字了。是不是要进行什么转换?  
  ByRef   ty   As   Double,   _  
                  ByRef   by   As   Double,Top

6 楼painchen(学习中)回复于 2005-08-03 09:47:04 得分 0

regsvr32     试试Top

7 楼ssss1101(小氏)回复于 2005-10-24 18:59:10 得分 0

首先要把       函数申明中的引用类型(ByRef   tsRect   As   TS_RECT)改成intptr   或byte()数组,然后把所有的long类型都改成int   .Top

相关问题

  • 请问如何调用COM DLL的标准接口函数“DllRegisterServer”?
  • DLL调用函数问题
  • DLL的函数调用????
  • 为什么有时候调用一些api函数时 包错找不到dll接口
  • 什么工具可以看dll文件的输出函数接口,方法调用
  • 关于DLL中的函数调用
  • 调用.DLL中函数的问题?
  • 如何调用DLL中的函数。
  • dll,函数调用时的问题
  • jsp如何调用dll中的函数?

关键词

  • 文件
  • 数据
  • 注册
  • dll
  • top
  • tsrect
  • ty
  • byref
  • axmimage
  • rpjlineposition

得分解答快速导航

  • 帖主:xuehuavbnet

相关链接

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

广告也精彩

反馈

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