我在VC++中写了一个DLL,其中一个导出函数的参数是一个指针。请问在VB中如何传参?
解决方案 »
- 如何编程实现打开“我的电脑”
- 在线等!好简单好简单的问题!一分钟搞定!
- 使用MSHFlexGrid控件选择行时为什么老是错行
- 求用户口令验证的原代码
- 先进先出思想的代码,
- 求救:Server端两个网卡,LocalIp变成自设的192.168.0.2内部地址,无法连接,在线等待
- 请教在VB里去实现打印机的配置?我按某个按钮之后让它出现打印机的设置信息,可能是个系统调用?
- mscomm控件无法触发oncomm事件
- CSDN到底怎么了?
- 两个时间比较,如何确定 00:00 比 23:00 大?
- vb操作ACCESS,插入时有个小问题:insert into Sam_baseData(GRBH,PWD,CZDATE) values('SI0000405061','H'','2006-01-13')
- formmain是个什么啊 怎么用 和form窗提有什么区别
参数可以通过 VarPtr(函数名) 来传递地址,具体情况具体分析.
李志 [email protected] http://vbsite99.163.net/
1、在VC++中新建MFC AppWizard(DLL)工程vcdll:
vcdll.cpp的代码如下:
#include "stdafx.h"
#include "vcdll.h"long sum1(); //无参类型
extern "C" int APIENTRY sum2(int i); //从VB中接收一个参数
extern "C" long APIENTRY sum3(int i,int j); //从VB中接收两个参数#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endifBEGIN_MESSAGE_MAP(CVcdllApp, CWinApp)END_MESSAGE_MAP()CVcdllApp::CVcdllApp()
{
}CVcdllApp theApp;long sum1()
{ return 100+200; }extern "C" int APIENTRY sum2(int i)
{ i+=100;
return i;
}extern "C" long APIENTRY sum3(int i,int j)
{ return i+j;
}2、在vcdll.def中的代码如下:
LIBRARY "vcdll"
DESCRIPTION 'vcdll Windows Dynamic Link Library'EXPORTS
; Explicit exports can go here
sum1
sum2
sum3
3、在编译后,把vcdll.dll拷贝到Windows目录下。
4、VB中新建标准EXE工程vb_vcdll,vb_vcdll.frm的代码如下:
Private Declare Function sum1 Lib "vcdll.dll" () As Long
Private Declare Function sum2 Lib "vcdll.dll" (ByVal i As Integer) As Integer
'声明VC库中的函数
Private Declare Function sum3 Lib "vcdll.dll" (ByVal i As Integer, ByVal j As
Integer) As LongPrivate Sub Command1_Click()
Text1.Text = sum1() '调用VC函数
End SubPrivate Sub Command2_Click()
Text1.Text = sum2(110)
End SubPrivate Sub Command3_Click()
Text1.Text = sum3(100, 250)
End Sub
这段文章是我从VC的一篇技术文章中抄过来了 希望能过你点帮助