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
asp <----> vb(com,dll) <---> c 来回的调用,生命在于折腾的更多相关文章
- asp 调用 vb(activex dll) ,参数传递(传引用)需要注意
今天上午测试 vb 与 c(dll) 之间交互,传递参数的时候,没遇到什么太大的问题. 下午在asp中调用vb(activex dll)时, 在asp代码中传参数到 vb(dll)中时,遇到问题了. ...
- 【问题】Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数
[问题]Asp.net MVC 的cshtml页面中调用JS方法传递字符串变量参数. [解决]直接对变量加引号,如: <button onclick="deleteProduct('@ ...
- vb.net dll创建
创建vb.net的动态链接库 如果你想用用VC来编写vb.net的dll,我想本文不适合. 本文只说vb.net的dll. 何为vb.net的dll?实际上就是一个类库. 很多个类封装成一个库了,这就 ...
- C# 创建Dll文件供程序调用方法
C# 创建Dll文件供程序调用方法 使用C#创建动态Dll文件方法: 1. 在VS2017环境下,新建-项目-选择类库类型: 2. 新创建一个.cs文件(如test.cs),编写代码如下: usin ...
- 【重构】C# VS 配置引用程序集的路径(分离exe和dll从指定路径调用)
原文:[重构]C# VS 配置引用程序集的路径(分离exe和dll从指定路径调用) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CocoWu892 ...
- asp.net开源流程引擎API开发调用接口大全-工作流引擎设计
关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 一.程序调用开发接口二. 接口说明 所谓的驰骋工作流引擎的接口,在B ...
- Windows动态链接库:dll与exe相互调用问题
本文回顾学习一下Windows动态链接库:dll与exe相互调用问题.一般滴,exe用来调用dll中的类或函数,但是dll中也可以调用exe中的类或函数,本文做一些尝试总结. dll程序: Calcu ...
- Windows下查看dll被哪个进程调用
卸载程序,结果没卸载干净---程序的安装目录中还剩下一个dll文件.想删,结果系统提示说dll文件被某个进程占用了,不让删. 先前碰到这种做法,我都是直接使用unlocker先unlock一下,然后删 ...
- 怎样用VB编写.DLL动态链接库文件
VB一般可以生成两种特殊的DLL,一个是ActiveX DLL和ActiveX Control(*.ocx).这两种DLL都是VB支持的标准类型,在VB自身的例子中有,你可以参考.更详细的介绍可以参考 ...
随机推荐
- React.js 入门与实战之开发适配PC端及移动端新闻头条平台课程上线了
原文发表于我的技术博客 我在慕课网的「React.js 入门与实战之开发适配PC端及移动端新闻头条平台」课程已经上线了,文章中是目前整个课程的大纲,以后此课程还会保持持续更新,此大纲文档也会保持更新, ...
- RDMA技术解析
文章出处:https://mp.weixin.qq.com/s/pW-tQR4AYr1Gtd4dpHVW7w 摘要:远程直接内存访问(即Remote Direct Memory Access)是一种直 ...
- json模块 & pickle模块
之前学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所 ...
- jackson出现错误 Unrecognized field,几种处理方法
1.请求的JSON里面字段多余映射的实体类,可以通过在类的顶部添加@JsonIgnoreProperties,2.0版本引入 import org.codehaus.jackson.annotate. ...
- MySQL的启动程序
1.mysqld: mysql server [root@test bin]# ./mysqld --user=mysql & [root@test bin]# ps ...
- 总结and规划
不知不觉中又过去了一年,马上就要读研究生了,因此有必要对自己进行必要的总结,以及对自己有个良好的规划. 首先,描述自己当前的心情——对未来充满了恐惧和焦虑. 马上大学就要毕业了,回首经历的大学生涯,似 ...
- beta版验收互评
排名 团队名称 项目名称 优点 缺点,bug 报告 1 别看了你没救了队 校园帮帮帮(已发布) 实现普通用户的登陆,修改个人信息,发布信息,下订单的功能:管理员登陆,修改个人信息,发布信息,下订单,增 ...
- Java基础知识中的注意事项
设置Java的相关路径,举例: JAVA_HOME --> C:\Program Files\Java\jdk1.8.0_191 Path ---> C:\Program Fil ...
- PAT 1016 部分A+B
https://pintia.cn/problem-sets/994805260223102976/problems/994805306310115328 正整数A的“D~A~(为1位整数)部分”定义 ...
- 转帖 云和恩墨 http://www.eygle.com/archives/2015/06/sql_version_count.html
SQL多版本控制 - _CURSOR_OBSOLETE_THRESHOLD 作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道]链接:htt ...