Foxtable(狐表)用户栏目专家坐堂 → 关于引用dll的问题


  共有4551人关注过本帖树形打印复制链接

主题:关于引用dll的问题

帅哥哟,离线,有人找我吗?
ycwk
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/28 15:40:00 [只看该作者]

正准备说的,改了,报错。
全局代码
Public Declare Function INIT Lib "DLL\SiInterface.dll" Alias "INIT"(byref pErrMsg As stringbuilder) As Integer
Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"( byref InputData As StringBuilder ,byref OutputData As StringBuilder) As Integer



执行
Dim S_in As stringbuilder
Dim S_out As  stringbuilder
S_in= S_in.AppendLine("9100^301^admin^^201712281506010000^0000^^18DBF25B021A|88|1016|2002|^")


报错

---------------------------
版本:2017.8.19.1
---------------------------
代码执行出错,错误信息:



System.NullReferenceException: 未将对象引用设置到对象的实例。

   在 UserCode.Test()
---------------------------
确定   
---------------------------

[此贴子已经被作者于2017/12/28 15:43:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 15:52:00 [只看该作者]

Dim S_in As new stringbuilder
Dim S_out As new stringbuilder
S_in= S_in.AppendLine("9100^301^admin^^201712281506010000^0000^^18DBF25B021A|88|1016|2002|^")

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/28 17:36:00 [只看该作者]

报错如下:


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/28 18:04:00 [只看该作者]

1、你使用c#或者在vs里面能否正常使用和访问?你得到的实例是什么类型的?

 

2、那你试试改成

 

Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"(ByRef InputData As String, ByRef OutputData As String) As Integer


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/29 8:35:00 [只看该作者]

全局:
Public Declare Function INIT Lib "DLL\SiInterface.dll" Alias "INIT"(byref pErrMsg As stringbuilder) As Integer
Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"( byref InputData As StringBuilder ,byref OutputData As StringBuilder) As Integer

测试代码:


Dim S_in As new stringbuilder
Dim S_out As new stringbuilder
S_in= S_in.Append("9100^301^admin^^201712281506010000^0000^^18DBF25B021A|88|1016|2002|^18DBF25B021A|88|1016|2003|^")
Dim Sresult As Integer =  BUSINESS_HANDLE(S_in,S_out)


输出日志:
2017-12-29 08:11:29==>DEBUG      : INPUT FROM HIS = 莱W
2017-12-29 08:11:29==>SEVERE     : HIS端输入数据格式有误,请检查!输入数据为:莱W

显示输入不对,难道 S_in的输出代码不是:9100^301^admin^^201712281506010000^0000^^18DBF25B021A|88|1016|2002|^18DBF25B021A|88|1016|2003|^    ??

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/29 8:44:00 [只看该作者]

全局代码改成这样试试

 

Public Declare Function BUSINESS_HANDLE Lib "DLL\SiInterface.dll" Alias "BUSINESS_HANDLE"(ByRef InputData As String, ByRef OutputData As String) As Integer


 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/29 11:10:00 [只看该作者]

改了一样的,老是提示输入有误, 传的是     9100^301^admin^^201712291006400001^0000^^
用demo传同样的字符串就没问题 ,会不会和编码格式有关系?  


2017-12-29 11:04:04==>DEBUG      : 交易开始
2017-12-29 11:04:04==>DEBUG      : INPUT FROM HIS = $q
2017-12-29 11:04:04==>SEVERE     : HIS端输入数据格式有误,请检查!输入数据为:$q
2017-12-29 11:04:04==>DEBUG      : 出口处:返回值为:-2,传给his的数据为:^^HIS端输入数据格式有误,请检查!输入数据为:$q^
2017-12-29 11:04:04==>DEBUG      : 交易结束


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/12/29 12:10:00 [只看该作者]

demo提供的例子是什么语言编写的?贴出人家的完整代码看看。

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2017/12/30 22:53:00 [只看该作者]

可以成功传入    9100^301^admin^^201712291006400001^0000^^  字符串

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;


namespace YB
{
    public partial class Form1 : Form
    {
       // StringBuilder errMsg = new StringBuilder(1024);
        [DllImport("SiInterface.dll")]
        public static extern int INIT(StringBuilder errMsg);
        
        [DllImport("SiInterface.dll")]
        public static extern int BUSINESS_HANDLE(StringBuilder str1, StringBuilder str2);


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {


            StringBuilder errMsg = new StringBuilder(1024);
            StringBuilder str2 = new StringBuilder(1024);
            StringBuilder str1 = new StringBuilder("9100^301^admin^^201712291006400001^0000^^");
           

            INIT(errMsg);    
            BUSINESS_HANDLE(str1,str2);

        }
    }
}

[此贴子已经被作者于2017/12/31 9:36:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
ycwk
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1219 积分:8467 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2018/1/1 22:13:00 [只看该作者]

能帮忙看看是什么问题吗?

 回到顶部
总数 42 上一页 1 2 3 4 5 下一页