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自身的例子中有,你可以参考.更详细的介绍可以参考 ...
随机推荐
- 基于SimpleChain Beta的跨链交互与持续稳态思考
1. 区块链扩展性迷局 比特币作为第一个区块链应用与运行到目前为止最被信任的公链,其扩展性问题却持续被作为焦点贯穿着整个链的发展周期.事实上,在2009年1月4日比特币出现的那一天到2010年10月1 ...
- Rabbit and Grass
链接 [http://acm.hdu.edu.cn/showproblem.php?pid=1849] 题意 大学时光是浪漫的,女生是浪漫的,圣诞更是浪漫的,但是Rabbit和Grass这两个大学女生 ...
- #个人博客作业week3——微软必应词典的使用
产品的调研和评测 笔者使用的是win8的必应词典客户端. 首先打开客户端,用户界面的设计十分简洁,使用方便.但是词典主页与大多外语软件的设计相仿,例如有每日一句,每日阅读等模块,并没有令人感到新奇的地 ...
- 一些调格式的经验 & 插入图注和尾注
一些调格式的经验(以Word2010为例) 1. 从目录正文分别编页码 将光标放在要重新编写页码起始页的最开始位置 分节:页面布局->分隔符->分节符(连续) 插入页码后,选中页码起始页页 ...
- 『编程题全队』Scrum 冲刺博客
1.介绍小组新加入的成员,Ta担任的角色 Answer: 我们小组的倪兢飞同学决定跳槽到团队あ,我们小组开了一个简短而又严肃的会议,满足倪兢飞同学的意愿,并感谢他为团队做出的巨大贡献.虽然我们遗失了一 ...
- DockerHub使用简介
常用的Docker镜像文件都有,就不用自己费劲的一点点配置了,这才是Docker的真正目的.就像Ghost里边含office,直接还原,不用一台台机器安装呢,省时省力,与高效工作的理念相契合. 至于, ...
- Docker中安装Nexus3
https://blog.csdn.net/sqandczm/article/details/78560710 https://hub.docker.com/r/sonatype/nexus/ htt ...
- TimeLine CSS/Javascript 时间线
https://casbootadminserver.herokuapp.com/#/applications/23bd8218/trace
- 转载 loadrunner的一些问题解决
sckOutOfMemory 7 内存不足 sckInvalidPropertyValue 380 属性值不效 sckGetNotSupported 394 属性不可读 sckGetNotSup ...
- U 盘安装 CentOS的方法
1. 刻录U盘 我使用的工具是 UltralISO 2. 打开ISO 3. 使用<启动>-<写入磁盘映像> 根据U盘的性能 可能好事 5min-15min左右 4.找到想要安装 ...