LPCSTR *只能ByVal …… As Long传地址

解决方案 »

  1.   

    说的详细点好吗?不是LPCSTR * ,是LPCSTR 这两个有没有区别我不知道,因为我VC不熟,应该是不一样的吧。
      

  2.   

    __Stdcall
    这个问题在我刚用VC的时候就已经碰到了
      

  3.   

    DllExport int __ stdcall SMPPInitialize(LPCTSTR lpszINIFileName);
      

  4.   

    在MSDN中有这样的:将 C 语言声明转换为 Visual Basic 声明C 语言数据类型|在Visual Basic 中声明为   |调用时使用的表达式 
    ATOM         |ByVal variable As Integer | 结果为Integer类型的表达式 
    BOOL         |ByVal variable As Long    | 结果为 Long 类型的表达式 
    BYTE         |ByVal variable As Byte    |结果为 Byte 类型的表达式 
    CHAR ByVal   | variable As Byte         |结果为 Byte 类型的表达式 
    COLORREF     |ByVal variable As Long    |结果为 Long 类型的表达式 
    DWORD        |ByVal variable As Long    |结果为 Long 类型的表达式 
    HWND, HDC,
     HMENU 等。
    (Windows句柄)| ByVal variable As Long  |结果为 Long 类型的表达式 
    INT, UINT     | ByVal variable As Long  |结果为 Long 类型的表达式 
    LONG         |ByVal variable As Long    |结果为 Long 类型的表达式 
    LPARAM       |ByVal variable As Long    |结果为 Long 类型的表达式 
    LPDWORD      |variable As Long          |结果为 Long 类型的表达式 
    LPINT, LPUINT|variable As Long          |结果为 Long 类型的表达式 
    LPRECT       |variable As type          |自定义类型的任意变量 
    LPSTR, LPCSTR| ByVal variable As String |结果为 String 类型的表达式 
    LPVOID       |variable As Any           |任何变量(在传递字符串的时候使用 ByVal) 
    LPWORD       |variable As Integer       |结果为 Integer 类型的表达式 
    LRESULT      |ByVal variable As Long    | 结果为 Long 类型的表达式 
    NULL         |As Any 或ByVal variable As|
                 |  Long                    |ByVal Nothing
    SHORT        |ByVal variable As Integer |结果为 Integer 类型的表达式 
    VOID         |Sub procedure             |不可用 
    WORD         |ByVal variable As Integer |结果为 Integer 类型的表达式 
    WPARAM       |ByVal variable As Long    | 结果为 Long 类型的表达式 
      

  5.   

    to:
    zyl910(910:分儿,我来了!) 
     holydiablo(鱼头) 我不能改VC的源码,我这里就只有一个Dll.除了在函数定议前加 _stdcall以外还有什么办法啊,只在VB端作改动。
      

  6.   

    再用C写一个中间函数,调用源函数后用_stdcall返回。
    只有_stdcall才能跨编程环境调用。