我的毕业设计中想用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

解决方案 »

  1.   

    VB调用dll,你的dll文件中要特别用模块定义文件(.DEF)申明引用的函数.
    我给你搜了一下http://search.csdn.net/Expert/topic/1894/1894160.xml?temp=.6196863以后自己要好好利用csdn论坛本身的搜索功能.许多问题都有现成的答案.
      

  2.   

    DLL在什么位置不重要,最重要是要注册。
    注册了才能调用!
      

  3.   

    Private Declare Function maxab Lib "testdll.dll" (ByVal a As Integer, ByVal b As Integer) As Integer
    其它我不知道错在哪,不过你定义已经错了
    Private Declare Function maxab Lib "testdll.dll" (ByVal a As long, ByVal b As long) As long
      

  4.   

    谢谢,定义我改过来之后,还是同样的错误。我DLL是用Win32 Dynamic-link Library直接生成的,然后自己添上一个maxab导出函数。 前面jlctt(金)给的答案DLL是用Borland C 写的,其中用到了.def俄文件,而我没有用。这两者有什么区别吗?VB的Integer是不是只有两个字节长度?又如AndyFunction(开心)说,DLL要注册才能用,又是怎么回事?请大家容忍我的菜,谢谢大家。我郁闷好久了。
      

  5.   

    can't find dll entry ponit
      

  6.   

    regsvr32 xx.dll 运行里输入还有加个idispatch指针,方便vb调用
      

  7.   

    问题主要原因是C的调用机制和VB的调用机制不一样.
    在C里声明导出函数的接口为_stdcall的调用方式
    VB的调用方式是_stdcall
      

  8.   

    问题已经解决 wolfasp(小狼)正解,感谢大家帮忙.