vb与c语言数组传递,在VB中调用C/C++语言编写的dll,数组参数的传递-程序员宅基地

技术标签: vb与c语言数组传递  

动态链接库(dll)的好处就不多说了,这里就把如何在VB中调用VC写的dll函数的方法介绍一下,供有需要的朋友们参考,同时也免得自己以后忘了。

初次接触DLL的用户经常会遇到一个问题:在VC环境下创建的DLL,在VC里运行的好好的,可在VB应用程序中调用时却老是出现"调用约定错误"、"找不到入口点"之类的错误。这主要是由以下疏漏造成的。

首先,要注意DLL中的函数和VB中的函数声明在名称、返回类型、参数类型、参数个数等方面必须完全相同,尤其要注意大小写的问题。

其次,在DLL的.def文件中必须加上入口函数。

最后,在函数定义前必须加上extern "c",_stdcall关键字。

其中 _stdcall 是一种函数的调用约定,有关函数的调用约定可以参考文章

比如现在做一个求数组中所有元素的和的函数,完整代码如下

DLL_test_dll.h中的代码

extern "C"

{

int _stdcall sum(int len,int* a);

}

DLL_test_dll.cpp中的代码,红色部分为自己写的代码,其余的为系统自动生成

// DLL_test_dll.cpp : 定义 DLL 应用程序的入口点。

//

#include "DLL_test_dll.h"

#include

using namespace std;

#ifdef _MANAGED

#pragma managed(push, off)

#endif

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_31316383/article/details/117169177

智能推荐

i2c 驱动工作_i2c burst write-程序员宅基地

文章浏览阅读884次。在新版芯片(fpga)上写驱动:1. 新版sx_i2c burst write

今日头条的核心架构解析-程序员宅基地

文章浏览阅读84次。今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。一、产品背景今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):5亿注册用户2014年5月1.5亿,2015年5月3亿,2016年5月份为5亿。几乎..._用今日头条的实战复盘,教你大厂都在用的「信息降噪」方

boost regex 正则表达式使用学习_eeexfindregexboost-程序员宅基地

文章浏览阅读7.3k次。什么是正则表达式?正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express。如果您不知道什么是正则表达式,请看这篇文章http://blog.csdn.net/begtostudy/archive/2007/11/11/1879206.aspx有了正则表达式的基础,问题是如何使用。我们以boost::regex来说先看一个网上经典的例子。#i_eeexfindregexboost

C语言:float、double表示范围_c语言浮点型范围-程序员宅基地

文章浏览阅读7.8k次,点赞3次,收藏13次。float:1bit(符号位) 8bits(指数位) 23bits(尾数位)double:1bit(符号位) 11bits(指数位) 52bits(尾数位)所以,float的指数范围为 -127 ~ +129,而double的指数范围为 -1023 ~ +1024,并且指数位是按补码的形式来划分的。  其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。  float的范围为-2^128 ~ +2^128,也即-3.40E_c语言浮点型范围

SDNU-OJ:1095.Ignatius and the Princess IV-程序员宅基地

文章浏览阅读370次。SDNU-OJ:1095_1095.ignatius and the princess iv

聊聊H5与JS近几年的黑科技_世界h5黑科技-程序员宅基地

文章浏览阅读6.7k次,点赞3次,收藏16次。聊聊H5与JS近几年的黑科技自ajax技术的诞生,编程界兴起了一股WEB开发热,facebook,Twitter等众多大佬级企业都在网页应用上大放异彩,这十年我们见证了前端技术的崛起。这期间产生了众多脱离了浏览器的JS和H5开发的黑科技。移动端的react native,cordova,native.js;PC端的Node.js,NW.js;当然还有前端本身的众多框架,vue.js,jquer..._世界h5黑科技

随便推点

\t\tlinux学习之安装ttylinux(世界最小的linux操作系统)(转载)_bootcd-i486-8.1.iso.gz下载-程序员宅基地

文章浏览阅读2k次。一、资源平台: 虚拟机:Oracle公司的virtual Boxttylinux镜像源文件,官方下载(选第一个下载)http://linux.yosh.se/ttylinux/二、安装:第一步,用WinRAR解压缩bootcd-i486-8.1.iso.gz,变成,bootcd-i486-8.1.iso镜像文件备用。第二步,在Virtual Box中新建一个虚拟电脑,并指定内存大小和硬盘大小,我们_bootcd-i486-8.1.iso.gz下载

element-ui 的el-tooltip的样式修改及添加事件_elementui tooltip 添加点击事件-程序员宅基地

文章浏览阅读2.1k次。<el-tooltip placement="bottom-end" effect="light" popper-class="testtooltip"> <div slot="content" @click="$router.push('/')" class="content" >实物商品</div> <div slot="content" @click="$router.push('/shopMall/integralShop.._elementui tooltip 添加点击事件

vs扩展emacs插件_visualstudio 怎么用emacs扩展-程序员宅基地

文章浏览阅读1.2k次。安装微软官方插件下载地址【free】目前只提供vs2010下载:http://visualstudiogallery.msdn.microsoft.com/09dc58c4-6f47-413a-9176-742be7463f92vs2012安装需要对下载到的东西进行处理,此处提供可用于vs2012的插件下载或者自己对下载到的官方插件进行修改修改方法:修改插件后缀名为.zip,解_visualstudio 怎么用emacs扩展

Linux系统编程 —— 回收子进程 wait_while(wpid = waitpid(-1,null,0))-程序员宅基地

文章浏览阅读305次。孤儿进程一个父进程运行结束,其某些子进程还在运行,这些子进程则为孤儿进程。这些孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。wait函数// 成功:清理掉的子进程ID; 失败:-1(没有子进程)pid_t wait..._while(wpid = waitpid(-1,null,0))

Mybatis学习 利用Mybatis实现关联查询_mybatis 不同的逻辑找不同的字段进行关联-程序员宅基地

文章浏览阅读179次。文章目录一、 创建数据库表1、创建教师表2、创建成功后插入数据3、创建班级表4、创建成功后插入数据5、创建学生表6、创建成功后插入数据二、创建与数据库表对应的实体类1、创建教师实体类2、创建学生实体类3、创建班级实体类三、创建班级映射器配置文件四、修改MyBatis配置文件五、定义班级映射接口ClazzMapper六、创建测试类TestClazzMapper一、 创建数据库表1、创建教师表2、创建成功后插入数据3、创建班级表4、创建成功后插入数据5、创建学生表6、创建成功后插入数_mybatis 不同的逻辑找不同的字段进行关联

ArcGIS Runtime API for .NET——空间和数据分析_nearestcoordinate-程序员宅基地

文章浏览阅读562次。ArcGIS Runtime API for .NET——空间和数据分析空间和数据分析ArcGIS Runtime API for .NET——空间和数据分析一.创建几何二.几何构造器三.几何引擎四.将几何体投影到新的空间参考五.测量距离六.几何运算七.空间关系  几何运算可创建代表现实世界对象的几何,并比较和关联这些形状。  例如,你可能要测量代表湖泊或地区的多边形的面积。 也许你有多个几何形状,并且想知道它们之间的关系。 几何是执行空间分析的基本元素。 使用ArcGIS Runtime,可以通过几_nearestcoordinate

推荐文章

热门文章

相关标签