我有一个别人用VC写的dll (AcountDLL) 提供给我一个函数Acount(int a,int b)我要用VB写个dll 在asp中使用
Private Declare Function Acount Lib "AcountDLL" (ByVal a As Integer,ByVal b As Integer)Private Sub myAcount(m As String, n As Integer)
Dim result As Integer
result = Acount(m, n)
End Sub在asp中
set sss=server.CreateObject("conversion.fontConvert")
//conversion是我生成的dll名  fontConvert 是class名怎么 sss.myAcount(aaa,bbb) 为什么说找不到对象是dll上有错误?想请大家帮我写个简单的例子~~~  ^_^

解决方案 »

  1.   

    dim sss as new fontConvert
    试试
      

  2.   

    vb中使用public function
    应为有返回值Private Declare Function Acount Lib "AcountDLL" (ByVal a As Integer,ByVal b As Integer)public Function myAcount(m As String, n As Integer)
    Dim result As Integer
    result = Acount(m, n)
    End Function在asp中
    set sss=server.CreateObject("conversion.fontConvert")
    //conversion是我生成的dll名  fontConvert 是class名
    a=sss.myAcount(aaa,bbb) 
      

  3.   

    改一下public Function myAcount(m As String, n As Integer) as integer
    Dim result As Integer
    result = Acount(m, n)
    End Function
      

  4.   

    :( 还是不行~~~
    还是1000分征求高手帮我写下 我参考参考吧~~别人提供给我1个VC写的dll:GDchin.dll 和2个函数
    extern void GDBIG5ToGB(char* szBig5Buffer, unsigned int dwBufferSize);extern void GDGBToBIG5(char* szGBBuffer, unsigned int dwBufferSize); 
    这2个函数的返回值就是字符串。就用这个写个activex dll 在asp网页中调用这2个函数取得用户在表单里提交的信息,然后在这2个函数处理后返回信息。我初学,8会做,请高手指点~~~  
    谢谢Private Declare Function GDBIG5ToGB Lib "GDChin.dll" _
    (ByVal szBig5 As String, ByVal szBig5len As Integer)Private Declare Function GDGBToBIG5 Lib "GDChin.dll" _
    (ByVal szGB As String, ByVal szGBlen As Integer)
      

  5.   

    Public Function myFunGB5(str As String, strLen As Integer) As String
    Dim result As String
    result = GDBIG5ToGB(str, strLen)
    End FunctionPublic Function myFunGB(str As String, strLen As Integer) As String
    Dim result As String
    result = GDGBToBIG5(str, strLen)
    End Function
    在asp里
    <%
      set mydll=server.CreateObject("mydll.myclass")
      response.Write(""&mydll.myFunGB("测试",2)&"")
    %>提示说
    The remote procedure call failed and did not execute.各位DDJJ帮帮我啊~~~
      

  6.   

    更正下
    asp里是
    response.Write(""&mydll.GDGBToBIG5("测试",2)&"")
    response.Write(""&mydll.GDBIG5ToGB("测试",2)&"")错误提示:对象不支持此属性或方法: 'GDGBToBIG5'
      

  7.   

    ①关于DLL的创建与调用  使用VC++的向导即可。具体操作如下:打开菜单“File\New”→选择“Projects\Win32 Dynamic-Link Library”→选择“A simple DLL project”即可。这时系统会自动生成3个文件:*.cpp,stdafx.cpp,stdafx.h。  之后将入口函数DLLMain()补充完整,再添加你自定义的函数的代码。如果你自定义的函数很多,可以将这些函数的声明部分统一写入一个头文件中。再在.cpp文件首部用“#include”语句引入这个头文件。注意函数声明前要加上“__declspec(dllexport)”。  (如果你建DLL时选择的是第三种类型(加入示例代码),则在函数声明及定义前都要加上系统定义的宏“*_API”。)  在VB中用如下语句声明:“Declare Function 函数名 Lib "完整路径\文件名.dll" [Alias "函数别名"] (ByVal 变量1 As 类型1, ByVal 变量2 As 类型2,…) As 类型3”,与调用API函数类似。  注意:若在窗体代码的“通用”部分使用,“Declare”前要加“Private”;若在Moudle中使用,“Declare”前要加“Public”。若将DLL文件放在“\Windows\System”或“\WinNT\System32”目录下,“Lib”后只写出DLL主文件名即可。具体的实例代码见④(修正后的,可直接运行)。    ②关于入口点  如上编写Cipher.dll,运行,出现错误信息“找不到DLL入口点(Error 53)”。出现这一错误的原因是C++编译器在编译时对函数名Encrypt作了修改。打开快速查看程序(D:\WINNT\System32\Viewers\QuikView.exe),将Cipher.dll拖入查看窗口,找到字段“?Encrypt@@YAHHH@Z”,发现函数名被加了一串字符。  解决方法有二。第一,直接在VB声明中将“?Encrypt@@Y AHHH@Z”作为别名放在“Alias”后即可;第二,在Cipher.dll代码中在语句“__declspec(dllexport) int __stdcall Encrypt(int p, int k); ”前加上“extern "C" ”,编译后,用QuikView查看,函数名变为“_Encrypt”,之后再在VB声明中做相应调整即可。  (对于使用宏的DLL,在“#define”语句中,对宏“Cipher_API”的替换值做更改即可。)进行了③的更改后,程序又找不到入口点了。再用QuikView查看,发现函数名变为“_Encrypt@8”。还有解决方法。在Cipher.dll工程中添加一个文本文件,命名为“Cipher.def”,添加代码如④。编译后再用QuikView查看,函数名变回“Encrypt”,在VB中调用,运行正常。   ③关于调用约定  采用②中第二种解决方法,运行,出现错误信息“DLL调用约定错误(Error 49)”。原因是调用约定共有4种方式:__fastcall、__pascal、__stdcall、__cdecl,VC++默认调用方式为__cdecl,而VB默认调用方式则为__stdcall。解决方法是,更改代码如下(限定调用方式):  extern “C” __declspec(dllexport) int __stdcall Encrypt(int p, int k);  …………  int __stdcall Encrypt(int p, int k)    {           int c = p+k;           return c;    }   ④源代码Cipher.dll: Cipher.cpp:    //引入预编译头文件  #include “stdafx.h”    //声明我的函数extern “C” __declspec(dllexport) int __stdcall Encrypt( int p, int k );    //DLL入口函数       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;       }         //我的函数        int __stdcall Encrypt ( int p, int k )        {            int c = p + k ;            return c ;        }  Cipher.def:  LIBRARY Cipher  EXPORTS Encrypt 编译后,将Cipher.dll复制到“D:\WINNT\System32”目录。在VB中调用:  Option ExplicitPrivate Declare Function Encrypt Lib “Cipher” _ (ByVal p As Long, ByVal k As Long) As Long        Private Sub Form_Load()  Dim c As Long  c = Encrypt(24, 8)  Text1.Text = c  End Sub
      

  8.   

    问题解决了吗?你的dll一直没有没有给我我发给你的组件可以用吗
    ??