使用VC编写VB使用DLL
使用VC编写VB使用DLL
一、在函数定义前必须加上extern "c",_stdcall关键字。
extern "C" int _stdcall Sum(int x,int y)
{
return x+y;
}
二、DLL的.def文件中必须加上入口函数
EXPORTS
sample @1
sample是你要在VB中调用的函数名,@1表示该函数在DLL中的编号
三、要注意DLL中的函数和VB中的函数声明在名称、返回类型、参数类型、参数个数等方面必须完全相同,尤其要注意大小写的问题。
注意事项:
1、必须保证VB和VC的参数个数相同,参数所占字节数也一致
3.数组参数在DLL中的传递
由于DLL经常用来进行一些底层的运算操作,因此应用程序常需要传递大量的数据给DLL。在C++中,指针是进行数组操作的最佳选择,但VB中没有指针的概念。这通常可用两种方法来解决。
其一,在VB中声明DLL时,用byref来代替byval,即可将数组指针传递给DLL。
另外,将数组声明为变体型(variant),即可直接将数组传递给DLL。
四、在vb中声明("dllTest.dll" 使用的是相对路径,你可以将dll.dll放到.exe所在的目录或系统目录),函数名大小敏感
Private Declare Function Sum Lib "dllTest.dll" (ByVal x As Long, ByVal y As Long) As Long
五、例子
1、新建一个win32 dynamic library,空的工程
2、新建一个dllTest.cpp 文件,并添加到工程。内容如下
// dll4.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
extern "C" int _stdcall Sum(int x,int y)
{
return x+y;
}
extern "C" int _stdcall GetNum(int Num) /*具体实现*/
{
return Num;
}
// dll4.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
相关文档:
虽然WindowsXP的界面非常华丽。但是令人遗憾的是,我们用VB写的程序除了菜单和窗口的外观是XP风格外,其他控件还是一如既往的是普通风格。我想,有的程序在XP下有XP的风格,VB也一定有办法实现XP的风格。后来笔者在网上看到一篇介绍XML的文章,又在网上找到了一篇实现XP风格的文章,经过自己的实践,终于找到了VB程序 ......
重拾VB之二,毫秒篇
PMP 关劲松
鬼使神差,09年12月入职的公司仍使用VB开发软件,虽然并非专职开发,但也不得不在事隔4年之后,重新使用VB。
在vb中如何获得毫秒精度级别的时间?vb的时间函数不支持毫秒,需要利用windows的基本API,编写程序才能获取毫秒级 ......
引言:
做一个控件, 用于 数据采样如示波器, 可以添加,删除曲线, 设置曲线的相关属性: 线型,颜色,等...
过程:
先创建 线 类, 在用户控件里实现 线 对象创建, 并声明一个 集合, 用于 存放建立的线对象.
问题 ......
Welcome to Microsoft Developer Support, Languages team blog! You will find a lot of language related troubleshooting resources here.
Troubleshooting PInvoke Related Issues
I am back with some more PInvoke Stuff. Recently I was working on a PInvoke issue which I found interesting ......
“自动点击按钮”小工具VB源码
Option Explicit
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Pri ......