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


    最近想改进一个两年前写的小程序,原因是最近将运行在托管服务器上的asp程序迁移到阿里云主机上运行。

    初次使用阿里云主机,买了一个配置较低的主机(1核,1G内存,年付:1500左右吧)

    原来使用的托管的服务器配置较高(双核,1G内存)

    原来的代码工作过程:

    从远程服务器下载图片保存到本地服务器,进行优化后,再上传到远程服务器。

    这里涉及到IO环境较多(下载保存,图片优化后再保存,上传读取),在原来托管的服务器上运行的时候,感觉还行。

    但使用阿里云主机后,由于配置较低,硬盘IO性能不高,整个程序运行起来很卡。

    新的规划: 从远程服务器下载图片,保存到内存,直接优化内存中的图片,优化后直接将内存中的图片上传到远程服务器。

    也就是跳过所有的硬盘IO。

    由于原来的代码是asp写的,就需要写一个 com组件, 我花了一天时间尝试使用 标准c 来写com,到网上找了半天资料,最后也没搞成功。 vc/c++ 没写过。 最后没办法,就试了一下 vb,没想到用 vb 写 com非常的简单, 创建一个 activex dll 工程,只写了几行代码,生成dll,就能在 asp中调用了。真TM的快捷。

    不过问题又来了,图片优化这一块的关键代码是用 c 写的, 现在调用方式就变成: asp -> vb(com,dll) -> c -> vb -> asp

    由于vb调用c写的dll,由于参数类型的不同,传递参数又搞了一整天, 简直太折磨人了。

    下面是网上收集到的 vb 与 c(dll) 调用的相关资料:

    再谈在VB中调用VC++开发的DLL

    http://www.wangchao.net.cn/bbsdetail_28727.html

    通过 (MinWG)的命令: objdump youhua.dll -p 查看 dll中实际的函数名,其实在codeblocks中会生成相关的.def 文件,里面有详细的实际生成的函数名, 一般都是 函数名@number

    VB调用DLL的缺省调用方式是:传引用调用。即VB传一个指向参数变量的指针,DLL中便可以修改实际参数的值。

    若要传值方式,则需要在函数申明时在参数前加上ByVal关键字。

    下面谈谈字符串调用的约定。 事实上对字符串无论是否使用ByVal关键字,在DLL中均可以修改传入的参数。但,用不用ByVal关键字,还是有区别的。因为VB与DLL接口支持两种类型的字符串,VB是用如下的规则来匹配类型的,若没用关键字ByVal,则传一个VB字符串句柄(数据类型为HLSTR),这种类型或字符串句柄只有专为VB设计的DLL才能识别。所以,通常的DLL如果不是专门为VB设计的,就只有用ByVal关键字了。因为加了ByVal关键字后,VB会在字符串尾加上Null字符,即自动将VB字符串转换成C-style字符串,然后将指向该串的指针传给DLL。 

    C做Dll,在VB中调用dll 出现 Dll调用约定错误

    http://bbs.pfan.cn/showtxt.asp?id=288913

    VB如何调用DLL

    http://blog.csdn.net/chenkangli/article/details/396443

    在VB和DLL间传递字符串

    http://blog.csdn.net/sigepluto/article/details/1600448

    2014-03-31

  • 相关阅读:
    【算法学习笔记】27.动态规划 解题报告 SJTU OJ 1254 传手绢
    【算法学习笔记】26.扫描维护法 解题报告 SJTU OJ 1133 数星星
    【算法学习笔记】25.贪心法 均分纸牌问题的分析
    【算法学习笔记】24.记忆化搜索 解题报告 SJTU OJ 1002 二哥种花生
    【算法学习笔记】23.动态规划 解题报告 SJTU OJ 1280 整装待发
    【算法学习笔记】22.算法设计初步 二分查找 上下界判断
    【算法学习笔记】21.算法设计初步 求第k个数 划分法 快排法
    【算法学习笔记】20.算法设计初步 归并排序 求逆序数
    【算法学习笔记】19.算法设计初步 最大子列和问题的几种方法
    【算法学习笔记】18.暴力求解法06 隐式图搜索2 八数码问题 未启发
  • 原文地址:https://www.cnblogs.com/personnel/p/4584932.html
Copyright © 2020-2023  润新知