1、在Vc用extern "C"声明函数。
2、不应用_declspec(dllexport) 导出函数名,改用导出文件指定方式。
3、详情参考MSDN

解决方案 »

  1.   

    to liemen() 
    vc:
    long _declspec(dllexport) DllRegister(char* DllFileName)
    {}
    这个是在vc里的函数,不是声明
      

  2.   

    用文件指定输出的函数,不要用_declspec(dllexport) 。
    这个文件就是.DEF文件:
    如:EXPORTS
      

  3.   

    vc作dll有很多的细节,看看技术内幕中的解析,能有所帮助
      

  4.   

    //RegDll.Cpp#include <windows.h>extern "C" _declspec(dllexport) HRESULT DllRegisterServer();long _declspec(dllexport) DllRegister(char* DllFileName)
    {
    HMODULE hMod=LoadLibrary(DllFileName);
    if (0==hMod) 
    {
    return 1;
    }
    typedef void(*URegDll)();
    URegDll tReg = (URegDll)GetProcAddress(hMod,"DllRegisterServer");
    if(0==tReg)
    {
    return 2;
    }
    tReg();
    FreeLibrary(hMod);
    return 0;
    }//RegDll.DefLIBRARY "DllReg"
    EXPORTS 
    DllRegister @1
    //vbOption ExplicitPrivate Declare Function DllRegister Lib "DllReg.dll" (ByVal DllFile As String) As LongPrivate Sub Command1_Click()
        Dim mPath As String
        Dim tPath As Long
        mPath = App.Path & "\a.dll"
        tPath = DllRegister(mPath)
        Debug.Print tPath
        MsgBox tPath
    End Sub
    希望大家再关注一下
      

  5.   

    我也碰到这样的问题,vb下调试通不过,但编编译成exe则行,不知道是何原因,但可以用这种方发调试,在vc的dll下调试vb的程序,这样同样可以跟踪结果。
      

  6.   

    to  zhangjianwen(张海勤) 就是这样的
      

  7.   

    to :dyugao(风舞神枭) 
    我想不是程序的原因,可能是开发环境的设置问题。
      

  8.   

    不要用char* 做参数,因为vb是Unicode的,而且vb下的字符串的存储方式与vc也不同,字符串的最前面存的是字符串的长度。应该用与Unicode 相适应的字符串指针,例如:BSTR.最好用com
      

  9.   

    那个BSTR怎么用啊?
    好像是不怎么好用的
    邦一下忙啊。