(VC中)
1.建立工程,选择MFC AppWiZard(Dll)
2.选Regular Dll using shared MFC Dll (按完成)
3.在工程中添加必要的类,函数等
4.在StdAfx.cpp文件编写引出函数,
5.在def文件中说明引出函数及接口
EXPORTS
    ; Explicit exports can go here
    RSA_DeCrypt @1
7.编译成Dll(在VB中)
1.先把Dll放到程序工程目录下
2.引出函数:(跟上面对应)
  注:VB中的Long对应VC中的Int,
     VC中用到字符指针,在VB中可以用字符串,但的注意前面加ByVal 代码可以返回的,并且的先给字符串赋值(也就是定下字符的长度)
Public Declare Function RSA_DeCrypt Lib "MyRSAD.dll" (ByVal strData As String, ByVal strReturn As String) As Long
3.使用dll中的函数,如下:
Private Sub cmdDecrypt_Click()
    Dim strT As String
    Dim i As Long
    strT = Space(60) ' "                                                            "
    i = RSA_DeCrypt(txtOutPut.Text, strT)
    txtOuptDecrypt.Text = Trim(strT)
End Sub问题:
我是在同一台机上用vc和vb编写的,编写后的dll文件是放在工程目录的
在我的机上使用什么问题都没有
但当我把程序帮到别的机上就提示找不到dll文件,奇怪!!
难道vb程序调用dll的时候,不查找当前目录??
这是个问题!!
我这是第二次碰到这样的问题了,那位高手能说是个原由来吗?!
我想同样的问题不应该出现两次,但它出现,说明这并不是偶然

解决方案 »

  1.   

    再说明:在我机上没有把dll文件copy到系统目录
      

  2.   

    http://community.csdn.net/Expert/topic/3248/3248374.xml?temp=.208996
      

  3.   

    在StdAfx.cpp文件编写引出函数:(以下)
    int __stdcall RSA_DeCrypt(char *strData,char *strOutPut)
    {
    CString strD,strOut;
    strD=strData;
    strOut="";
    classRsa.Decrypt(strD,strOut);
    for (int i=0;i<strOut.GetLength();i++)
    strOutPut[i]=strOut.GetAt(i); return 1;
    }
      

  4.   

    打了VS的PACK5或PACK6应该没什么问题。
    其实你只要把路径(绝对路径或相对路径都可以)加上就可以了,想省点事的话就将之拷贝到系统目录(SYSTEM)下.
      

  5.   

    说明:
    在本机上,无论是放到当前目录,还是放到系统目录都是可以运行的但问题是,我要安装到别的机,在别的机上,无论是放到当前目录还
    是放到系统目录都不可访问(提示,找不到该dll),都不知道究竟是什么
    什么怪问题了
    我已经碰到两次这样的问题了,难道是跟我的dll有关?
    是因为选择MFC AppWiZard(Dll)有关?
    但我的用到一些mfc的类(CString),所以选择这个
    如果是这个问题,那为什么我的机上运行就一点问题都没有呢?
      

  6.   

    有没有谁对dll比较了解的
    能说明一下究竟dll是怎么样工作的?
      

  7.   

    当然要静态dll了,不然怎么不用引用呢?
      

  8.   

    看你的说法,你是没有打VS的PACK5或PACK6。
    赶紧打一个PACK吧!其他参考:
    1)确保你的程序是通过制作正确的安装程序安装上去的,而不是简单COPY过去的--否则可能缺少必要的类库;
    2)给个绝对路径;
    3)重新启动计算机;