VC调用 vb DLL出错(vb DLL访问了数据库)

lys0053 2009-07-20 01:46:27
这是VC代码
#import "C:\WINDOWS\system32\RSDLL.dll"no_namespace
#import "C:\WINDOWS\system32\msado15.dll"no_namespace



int _stdcall KMT_start(int devType, char uid[], char fw[], char chip[], int tune, char kmtINI[], long len[])
{
BSTR bstrDesc,str;
// SysFreeString(str);
str=_com_util::ConvertStringToBSTR(str1);

try
{
CoInitialize(NULL);
_Class1Ptr ptr=NULL;


ptr.CreateInstance(__uuidof(Class1));

if(ptr==0)
{

AfxMessageBox("无效的指针");
return 0;
}
ptr->KMT_app_start(&str);

}

catch(_com_error &e)
{
bstrDesc = e.Description();
}

CoUninitialize();
return 0;
}





报错:

e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tlh(45) : error C2146: syntax error : missing ';' before identifier 'Cn'
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tlh(45) : error C2501: '_ConnectionPtr' : missing storage-class or type specifiers
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tlh(45) : error C2501: 'Cn' : missing storage-class or type specifiers
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tlh(51) : error C2146: syntax error : missing ';' before identifier 'GetCn'
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tlh(51) : error C2501: '_ConnectionPtr' : missing storage-class or type specifiers
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tli(14) : error C2143: syntax error : missing ';' before 'tag::id'
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tli(14) : error C2433: '_ConnectionPtr' : 'inline' not permitted on data declarations
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tli(14) : error C2501: '_ConnectionPtr' : missing storage-class or type specifiers
e:\program files\microsoft visual studio\myprojects\callvb\debug\rsdll.tli(14) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

CALLVB.dll - 9 error(s), 0 warning(s)
...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangsenyy 2009-11-24
  • 打赏
  • 举报
回复
怎么解决的,教教我。
huangsenyy 2009-11-24
  • 打赏
  • 举报
回复
怎么解决的,教教我。
lys0053 2009-07-23
  • 打赏
  • 举报
回复
最终还是自己解决了问题
枫桦沐阳 2009-07-21
  • 打赏
  • 举报
回复
一看就是没有包含头文件阿。。.
lys0053 2009-07-21
  • 打赏
  • 举报
回复
这只是部分代码,VC代码用不访问数据库的VB dll测试是没问题的,而调用访问数据的VB dll编译时就出错

这是生成的.tlh代码

#pragma once
#pragma pack(push, 8)

#include <comdef.h>

//
// Forward references and typedefs
//

struct __declspec(uuid("7c3d4c9d-ad5c-4db5-9df4-e593e5279e16"))
/* dual interface */ _Class1;
struct /* coclass */ Class1;

//
// Smart pointer typedef declarations
//

_COM_SMARTPTR_TYPEDEF(_Class1, __uuidof(_Class1));

//
// Type library items
//

struct __declspec(uuid("7c3d4c9d-ad5c-4db5-9df4-e593e5279e16"))
_Class1 : IDispatch
{
//
// Property data
//

__declspec(property(get=GetCn,put=PutRefCn))
_ConnectionPtr Cn;//这里我在msado15.tlh和msado26.tlh里都没找到


//
// Wrapper methods for error-handling
//

_ConnectionPtr GetCn ( ); //这里报错
void PutRefCn (
struct _Connection * Cn );
HRESULT OpenConnection ( );
_variant_t DT_start (
short devType,
_bstr_t uid,
_bstr_t fw,
_bstr_t chip,
short tune,
_bstr_t kmtINI,
long L );

//
// Raw methods provided by interface
//

virtual HRESULT __stdcall get_Cn (
struct _Connection * * Cn ) = 0;
virtual HRESULT _VtblGapPlaceholder1( ) { return E_NOTIMPL; }
virtual HRESULT __stdcall putref_Cn (
struct _Connection * Cn ) = 0;
virtual HRESULT __stdcall raw_OpenConnection ( ) = 0;
virtual HRESULT __stdcall raw_DT_start (
short devType,
BSTR uid,
BSTR fw,
BSTR chip,
short tune,
BSTR kmtINI,
long L,
VARIANT * _arg8 ) = 0;
};

struct __declspec(uuid("dc0c4ffb-89ed-44a6-8f25-801a2cb7eb36"))
Class1;
// [ default ] interface _Class1

//
// Wrapper method implementations
//

#include "e:\program files\microsoft visual studio\myprojects\callvb\debug\RS21.tli"

#pragma pack(pop)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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