我的毕业设计中想用C++写程序给VB界面调用.
但是VB是现学的,C++也只是上课听听而已的那种水平.
也没有写过DLL.
高手能不能给我这个菜鸟详细说明下整个过程?为了明白这些,我试了下弄个简单的DLL,但是,调用的时候,却报告找不到DLL.
我已把DLL同时拷进了system和.exe所在文件夹.下面是我的程序,请帮忙看看是什么问题:// testdll.cpp : Defines the entry point for the DLL application.
//#include "stdafx.h"
#define TESTDLL_EXPORT
#include "testdll.h"BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
// This is an example of an exported variable
TESTDLL_API int nTestdll=0;// This is an example of an exported function.
TESTDLL_API int fnTestdll(void)
{
return 42;
}// This is the constructor of a class that has been exported.
// see testdll.h for the class definition
CTestdll::CTestdll()
{
return;
}TESTDLL_API int maxab(int a,int b)
{
if(a>b)
return a;
else
return b;
return 0;
}
//vb调用.Private Declare Function maxab Lib "testdll.dll" (ByVal a As Integer, ByVal b As Integer) As IntegerPrivate Sub Command1_Click()Dim ax As Integer
Dim bx As Integer
Dim cx As Integer
ax = 1
bx = 2
cx = maxab(ax, bx)End Sub结果:run-time erro 53
file not found:testdll.dll
但是VB是现学的,C++也只是上课听听而已的那种水平.
也没有写过DLL.
高手能不能给我这个菜鸟详细说明下整个过程?为了明白这些,我试了下弄个简单的DLL,但是,调用的时候,却报告找不到DLL.
我已把DLL同时拷进了system和.exe所在文件夹.下面是我的程序,请帮忙看看是什么问题:// testdll.cpp : Defines the entry point for the DLL application.
//#include "stdafx.h"
#define TESTDLL_EXPORT
#include "testdll.h"BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
// This is an example of an exported variable
TESTDLL_API int nTestdll=0;// This is an example of an exported function.
TESTDLL_API int fnTestdll(void)
{
return 42;
}// This is the constructor of a class that has been exported.
// see testdll.h for the class definition
CTestdll::CTestdll()
{
return;
}TESTDLL_API int maxab(int a,int b)
{
if(a>b)
return a;
else
return b;
return 0;
}
//vb调用.Private Declare Function maxab Lib "testdll.dll" (ByVal a As Integer, ByVal b As Integer) As IntegerPrivate Sub Command1_Click()Dim ax As Integer
Dim bx As Integer
Dim cx As Integer
ax = 1
bx = 2
cx = maxab(ax, bx)End Sub结果:run-time erro 53
file not found:testdll.dll
解决方案 »
- VB表格问题
- 从字符串中提取字符并转换成双精度型(VB)
- Text文件里面读取的字符怎么才能自动转行啊
- VSFlexGrid1的Combo如何让他联接一个数据库表
- 一个关于mshflexgrid控制的问题,请mshflexgrid 高手进!在线等待
- 给TREEVIEW加背景色和节点背景、前景色后,TREEVIEW怎么会出现空白区域
- 如何用 VB 弹出 “数据连接属性设置”,不用 DataGrid 控件,用代码实现?
- 求帮忙!
- 困惑已久的问题:VB中的文本框和数据绑定以后,只可以新添加记录,或者修改记录,但是我想把已经赋值的记录置空就不行,各位有经验,帮我
- App.path 的属性 可以在 Ado的date scours=App.path &"\sa.mdb"中使用吗??
- 在文档如何判断是否含有某个标签??
- vb 菜问
我给你搜了一下http://search.csdn.net/Expert/topic/1894/1894160.xml?temp=.6196863以后自己要好好利用csdn论坛本身的搜索功能.许多问题都有现成的答案.
注册了才能调用!
其它我不知道错在哪,不过你定义已经错了
Private Declare Function maxab Lib "testdll.dll" (ByVal a As long, ByVal b As long) As long
在C里声明导出函数的接口为_stdcall的调用方式
VB的调用方式是_stdcall