com创建失败

sunht 2001-07-24 11:22:05
用vb写了一个com+组件,注册后用vc 调用,编译一切正常,可是在CreateInstance(__uuidof(test::class1))的时候总是不能成功,用SUCCEEDED宏判断总是发现创建失败,怎么回事呢???
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunht 2001-07-25
  • 打赏
  • 举报
回复
to wyzegg(蛋) 可是project1::class1这种写法是没有问题的,你的程序中的
_ConnectionPtr pConnection;如果没有no_namespace的话,应该写成ADODB::_ConnectionPtr pConnection;并不是这个问题,我看到别人这么用成功了的,真的。
to zzh()初始化COM库是肯定的呀, 我做了
zzh 2001-07-24
  • 打赏
  • 举报
回复
你在VC中要首先初始化COM库
wyzegg 2001-07-24
  • 打赏
  • 举报
回复
test::class1怎么是这样呢,一般要test.class1
看一个ado怎么写的
_ConnectionPtr pConnection;
pConnection.CreateInstance(__uuidof(Connection));
所以连test.都不用要就行的
看一下ado怎么用的
#include "stdafx.h"
#include "afxdb.h"
#include "stdio.h"
#include "windows.h"
#define _WIN32_DCOM
#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
int main(int argc, char* argv[])
{
int nRow=0;
char name[30];
CoInitialize(NULL);
_ConnectionPtr pConnection;
FieldsPtr pFieldsPtr;
FieldPtr pFieldPtr;
_RecordsetPtr pUserSet;
char *szOpen="Provider=MSDAORA.1;Password=DaoBaDan;User ID=wyz;Persist Security Info=False";
// char * szOpen="Provider=MSDASQL.1;Persist Security Info=False;Data Source=AddressBook";
try
{
pConnection.CreateInstance(__uuidof(Connection));
pConnection->Open(szOpen,"","",-1);
}
catch(...)
{
printf("数据库初始化错误,程序将关闭!\n");
return FALSE;
}
variant_t var;
try
{
pConnection->Execute("insert into test_tab values(1004,'43646')"/*"select * from test_tab"*/,&var,adCmdText);
pConnection->Execute("commit"/*"select * from test_tab"*/,&var,adCmdText);
}
catch(_com_error *e)
{
printf(e->ErrorMessage());
}
pUserSet.CreateInstance(__uuidof(Recordset));
try
{

pUserSet->Open("test_tab",
pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdTable);


while (!pUserSet->EndOfFile)
{

nRow++;
pFieldsPtr = pUserSet->Fields;
pFieldPtr = pFieldsPtr->Item["test_id"];
if( pFieldPtr->Value.vt==VT_NULL )
strcpy(name,"");
else
strcpy(name,_bstr_t(pFieldPtr->Value));
printf("row%d's test_id is %s\n",nRow,name);

pUserSet->MoveNext();


}
}
catch(...)
{
printf("error");
}
try
{
pUserSet->AddNew();

}
catch(_com_error * e)
{
printf(e->ErrorMessage());
}

/* pFieldsPtr = pUserSet->Fields;
pUserSet->AddNew();
{
pFieldPtr = pFieldsPtr->Item["test_id"];
char *str = "88888";

pFieldPtr->Value = (_variant_t)str;

pFieldPtr = pFieldsPtr->Item["test_name"];
str = "88888";

/* pFieldPtr->Value = (_variant_t)str;

pFieldPtr = pFieldsPtr->Item["Address"];
str = "88888";

pFieldPtr->Value = (_variant_t)str;

pFieldPtr = pFieldsPtr->Item["emailAddress"];
str = "88888";

pFieldPtr->Value = (_variant_t)str;

pFieldPtr = pFieldsPtr->Item["mobilephone"];
str = "88888";

pFieldPtr->Value = (_variant_t)str;

pFieldPtr = pFieldsPtr->Item["homephone"];
str = "88888";

pFieldPtr->Value = (_variant_t)str;

pFieldPtr = pFieldsPtr->Item["Notes"];
str = "88888";

pFieldPtr->Value = (_variant_t)str;*/
/* }
pUserSet->Update();
pUserSet->MoveFirst();
pUserSet->Delete(adAffectCurrent);
pUserSet->Update();
pUserSet->Close();
/* catch(...)
{
//printf(e->ErrorMessage());
printf("fdgdg");
}*/

// pUserSet->Close();


/* catch(_com_error *e)
{
printf(e->ErrorMessage());
}*/
/* catch(...)
{
printf("error");
}*/
CoUninitialize();
return 0;

}

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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