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自身的例子中有,你可以参考.更详细的介绍可以参考 ...
随机推荐
- 【亲测有效】运行docker ps 出现Got permission denied问题的解决方案
问题描述 今天在运行 docker ps 命令的时候出现如下问题: Got permission denied while trying to connect to the Docker daemon ...
- centos6.8下LNMP (nginx1.8.0+php5.6.10+mysql5.6.12) - 部署手册
在平时运维工作中,经常需要用到LNMP应用框架.以下对LNMP环境部署记录下: 1)前期准备:为了安装顺利,建议先使用yum安装依赖库[root@opd ~]#yum install -y make ...
- 1013 C. Photo of The Sky
传送门 [http://codeforces.com/contest/1013/problem/C] 题意 输入一个n代表n颗星星,输入2n个数,其中任意两个数代表一颗行星的坐标,问你把n个星星围起来 ...
- linux内核分析第四次实验
实验步骤: 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用.本次实验中我使用第20号系统调用getpid()函数,用于取得进程识别码. C代码(getpid.c): #include ...
- Asp.net框架与SpringMvc框架简单分析
(此文为自我总结,错误很多请勿借鉴) 1.就前两天分析SpringMvc框架中是通过controler来实现跳转页面,通过mapping来实现数据连接 分析的方法又通过java的类之间进行相互调用,个 ...
- 广商博客沖刺第一天(new ver):
項目名稱:廣商博客 沖刺二天傳送門 此次Sprint的目标:全部sprint任務完成 时间:1星期左右 每日立会 Daily Standup Meeting: 1#A3008 晚上8点开始,大概1小时 ...
- 第三个Sprint冲刺第4天
成员:罗凯旋.罗林杰.吴伟锋.黎文衷 讨论内容:各成员汇报各自完成的情况.
- Spring MVC静态资源处理(转)
原文地址: http://www.cnblogs.com/fangqi/archive/2012/10/28/2743108.html 优雅REST风格的资源URL不希望带 .html 或 .do 等 ...
- Java基础知识中的注意事项
设置Java的相关路径,举例: JAVA_HOME --> C:\Program Files\Java\jdk1.8.0_191 Path ---> C:\Program Fil ...
- Node fs模块同步读取写入追加
JS文件中const fs = require("fs");console.log("开始进入文件读取.."); //同步的写入var data = fs.re ...