今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题。

下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了。

上午写 vb 与 c(dll)的时候,vb 传参数到c(dll)的时候,默认就传引用, 除非在vb中显示的使用 byval.

下午写 asp 与 vb(dll)的时候,asp传参数到 vb(dll)的时候,默认传值,而我需要按引用传过去。

在 vb(dll)中,我显示的申请参数的类型: byref x as Integer, 在 asp中调用,就会抛出错误: 调用的参数类型不正确

明明申请变量为 Integer, 传过去的也确实是 Integer类型的,为什么会出这样的错误呢?

搜索了老半天,终于找到解决办法:

ASP如何传递引用参数到DLL中? http://bbs.csdn.net/topics/60474811

其中关键点:在vb(dll)中变量不仅要申明为 ByRef 同时还要 as Variant

Public Function ExportXLS(ByRef x As Variant, ByRef y As Variant) As Integer

End Function

这样在asp中传参数的时候,就是按引用传递,传过去的参数也就可以在 vb(dll)内部修改了。

不过测试时还发现,如果传过去的是字符串,同时想在vb(dll)中修改这个字符串,最好先申请一个临时的字符串,然后处理这个临时的字符串,最后把再这个字符串赋值到 asp 传过去的那个字符串变量上。不然会出现意想不到的结果。

2014-04-01

asp 调用 vb(activex dll) ,参数传递(传引用)需要注意的更多相关文章

  1. C#调用C/C++ DLL 参数传递和回调函数的总结

    原文:C#调用C/C++ DLL 参数传递和回调函数的总结 Int型传入: Dll端: extern "C" __declspec(dllexport) int Add(int a ...

  2. 难道同事:Java 方法调用到底是传值还是传引用

    Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...

  3. 难住了同事:Java 方法调用到底是传值还是传引用

    Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...

  4. vc调用BCB的dll 参数传递 报错

    可能原因: 调用方式约定不一致. 函数调用约定如下: 1. __cdecl:C 和 C++ 程序的缺省调用规范. 2. __stdcall:标准调用约定(即WINAPI调用约定),也就是pascal调 ...

  5. Java中的形参和实参的区别以及传值调用和传引用调用

    名词解析: 1.形参:用来接收调用该方法时传递的参数.只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间.因此仅仅在方法内有效. 2.实参:传递给被调用方法的值,预先创建并赋予确定值. 3 ...

  6. asp <----> vb(com,dll) <---> c 来回的调用,生命在于折腾

    最近想改进一个两年前写的小程序,原因是最近将运行在托管服务器上的asp程序迁移到阿里云主机上运行. 初次使用阿里云主机,买了一个配置较低的主机(1核,1G内存,年付:1500左右吧) 原来使用的托管的 ...

  7. ASP 调用dll(VB)及封装dll实例

    ASP调用dll及封装dll实例,封装为dll可以提供运行效率,加密代码. 打开VB6,新建ActiveX DLL 2.在工程引用中加入Microsoft Active Server Pages Ob ...

  8. Python参数传递,既不是传值也不是传引用

    面试的时候,有没有被问到Python传参是传引用还是传值这种问题?有没有听到过Python传参既不是传值也不是传引用这种说法?一个小小的参数默认值也可能让代码出现难以查找的bug? 如果你也遇到过上面 ...

  9. 【Java-Method】读《重构》有感_Java方法到底是传值调用还是传引用调用(传钥匙调用)

    今天读<重构>P279, Separate Query from Modifier,将查询函数和修改函数分离. 问题的产生 突然想到 Java 的传对象作为参数的方法到底是 传引用调用,还 ...

随机推荐

  1. element-ui + vue + node.js 与 服务器 Python 应用的跨域问题

    跨越问题解决的两种办法: 1. 在 config => index.js 中配置 proxyTable 代理: proxyTable: { '/charts': { target: 'http: ...

  2. C. Maximum Subrectangle

    链接 [http://codeforces.com/contest/1060/problem/C] 题意 给你两个数列,可以构成一个矩阵C,ci,j=ai⋅bj 1≤x1≤x2≤n , 1≤y1≤y2 ...

  3. Software Engineering homework2

    现在市面上有诸多软件,选取一类软件,请分析: Q1:此类软件是什么时候出现的,这些软件是怎么说服你(陌生人)成为它们的用户的?他们的目标都是盈利的么?他们的目标都是赚取用户的现金的么?还是别的? A1 ...

  4. Leetcode——171.Excel表列序号【水题】

    @author: ZZQ @software: PyCharm @file: leetcode171_Excel表列序号.py @time: 2018/11/22 15:29 要求: 给定一个Exce ...

  5. What’s for Beta

    经过和Travis与Zhongqiu讨论,我们希望我们发布的Beta版本会支持如下内容: Naïve long-term plan UI (Useable) Naïve long-term plan ...

  6. DrangonBorns

    团队介绍 团队名称:DrangonBorns(龙裔)      团队博客:http://www.cnblogs.com/DragonBorns/     团队队长:蒲建国     队长博客链接:htt ...

  7. spring 整合

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  8. Minor GC vs Major GC vs Full GC

    http://www.importnew.com/15820.html https://plumbr.io/blog/garbage-collection/minor-gc-vs-major-gc-v ...

  9. Windows命令行下如何使用批处理异步打开一个浏览器进程

    Browse.bat @echo off if '%1'=='-c' ( start /d "C:\Program Files\Google\Chrome\Application\" ...

  10. Oracle数据库SQLPLUS 连接显示 ??? 的解决

    linux下 安装了中文版本的,造成sqlplus 连接时出现了乱码 如图 一开始以为是LANG 变量的问题 后来发现是NLS_LANG的问题 解决方法: export NLS_LANG=" ...