动态链接库(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