DLL问题?“DLL 调用约定错误”提示。

public 2001-12-23 06:55:07

函数原型:

BOOL _declspec(dllimport) SQLSCMLocalServiceStateW(LPWSTR lpszSvc,LPDWORD pdwErr);

vb:
public declare function SQLSCMLocalServiceState lib“....\w95scm.dll”
alias ) SQLSCMLocalServiceStateW(byval lpszsev as string, byval pdwerr as
long ) as bolean

error:?“DLL 调用约定错误”
...全文
203 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuxia 2001-12-28
  • 打赏
  • 举报
回复
不要BYVAL试试。
greensleeve 2001-12-28
  • 打赏
  • 举报
回复
我来了
public 2001-12-25
  • 打赏
  • 举报
回复
to : mazizhen(Mzz) 
我该成指针也一样.
Public Declare Function SQLSCMLocalServiceState Lib "E:\zzz\w95scm.dll" _
Alias "SQLSCMGetLocalServiceStateA" (ByVal lpszsev As String, pdwerr As Long) As Long
仍然:error :run-time error '49',bad DLL calling convetion

mazizhen 2001-12-25
  • 打赏
  • 举报
回复
你在VB中的声明里,那个Long参数用的是 Byval
而你在DLL的声明里,那个是LPDWORD是指针,这样不会出现问题吗?NULL指针啊!!
public 2001-12-25
  • 打赏
  • 举报
回复
stdafx.h:
// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#if !defined(AFX_STDAFX_H__9DFEB815_3B4F_11D4_9438_00C04F2770EA__INCLUDED_)
#define AFX_STDAFX_H__9DFEB815_3B4F_11D4_9438_00C04F2770EA__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


// TODO: reference additional headers your program requires here
#include <windows.h>
#include <stdio.h>

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__9DFEB815_3B4F_11D4_9438_00C04F2770EA__INCLUDED_)
public 2001-12-25
  • 打赏
  • 举报
回复
/***********************************************************************
Copyright (c) 2000, Microsoft Corporation
All Rights Reserved.
***********************************************************************/

#ifndef _WN95SCMH_
#define _WN95SCMH_

#ifdef __cplusplus
extern "C"{
#endif

// Numeric constants
#define SERVICE_UNKNOWN 0
enum enumSQLSCMCommands {SQLSCMCmd_STOP,
SQLSCMCmd_PAUSE,
SQLSCMCmd_START,
SQLSCMCmd_CONTINUE};

// Function prototypes
BOOL _declspec(dllimport) SQLSCMLocalServiceControlA(LPSTR lpszSvc,int iCommand,LPDWORD pdwErr,int iCount,void *lpStartParameter);
BOOL _declspec(dllimport) SQLSCMLocalServiceControlW(LPWSTR lpszSvc,int iCommand,LPDWORD pdwErr,int iCount,void *lpStartParameter);
DWORD _declspec(dllimport) SQLSCMGetLocalServiceStateA(LPSTR lpszSvc,LPDWORD pdwErr);
DWORD _declspec(dllimport) SQLSCMGetLocalServiceStateW(LPWSTR pwszSvc,LPDWORD pdwErr);

#ifdef UNICODE
#define SQLSCMLocalServiceControl SQLSCMLocalServiceControlW
#define SQLSCMGetLocalServiceState SQLSCMGetLocalServiceStateW
#else
#define SQLSCMLocalServiceControl SQLSCMLocalServiceControlA
#define SQLSCMGetLocalServiceState SQLSCMGetLocalServiceStateA
#endif // !UNICODE


#ifdef __cplusplus
}
#endif

#endif

fraser01 2001-12-25
  • 打赏
  • 举报
回复
你把C++开头声明部分贴出来看看
kingfish 2001-12-25
  • 打赏
  • 举报
回复
帮你UP
public 2001-12-24
  • 打赏
  • 举报
回复

我的代码:
Public Declare Function SQLSCMLocalServiceState Lib "E:\zzz\w95scm.dll" _
Alias "SQLSCMGetLocalServiceStateA" (ByVal lpszsev As String, ByVal pdwerr As Long) As Long
仍然:error :run-time error '49',bad DLL calling convetion
dbcontrols 2001-12-24
  • 打赏
  • 举报
回复
“换成",注意中英文的引号差别,as bolean是不是应该是as long?
public 2001-12-24
  • 打赏
  • 举报
回复
to every friend

括号是我不小心写上的,我在vb中写的是

在vb中:
public declare function SQLSCMLocalServiceState lib“....\w95scm.dll”
alias "SQLSCMLocalServiceStateW"(byval lpszsev as string, byval pdwerr as
long ) as bolean
public 2001-12-24
  • 打赏
  • 举报
回复
to every friend

括号是我不小心写上的,我在vb中写的是

在vb中:
public declare function SQLSCMLocalServiceState lib“....\w95scm.dll”
alias SQLSCMLocalServiceStateW(byval lpszsev as string, byval pdwerr as
long ) as bolean
Ranma_True 2001-12-23
  • 打赏
  • 举报
回复
同意楼顶的
NightBreak 2001-12-23
  • 打赏
  • 举报
回复
alias括号去掉,如果要使用别名,就随便去一个不会冲突的别名,不用的话,去掉ALIAS;

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧