程序是基于对话框的,在 CxxDlg.cpp 中用 ::CoInitialize(NULL); 初始化,在程序结束的时候用CoUninitialize()释放,但是在编译的时候报错说:
1. CoInitialize重定义;以前的定义是“函数”
2. 缺少存储类或类型说明符
但是如果把 ::CoInitialize(NULL); 放在CxxApp.cpp文件中,就不会报错,但是会抛出异常
Microsoft C++ exception : _com_error @ 0x0012fc88我不太会用这个,请帮帮忙,谢谢

解决方案 »

  1.   

    你在stdafx.h里面加那两句了没?..
    肯定没有问题的
      

  2.   

    ::CoInitialize(NULL);应该是在CYouApp::InitInstance函数里
      

  3.   

    回:w78z(秋风细雨)  在stdafx.h文件中加入了 #import "X:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","EndOfFile") 这一句的回:laiyiling(陌生人●Happiness)
    是加在 CxxApp::InitInstance函数里面的,但是这样会抛出上面说的那个异常,怎么回事呢?
      

  4.   

    忘了说,这个程序是基于 UNICODE 环境的
      

  5.   

    如果可能的话,请将代码发至[email protected]
    注明原帖的url,发送完之后请发消息通知我。希望可以帮到你。
      

  6.   

    你的程序也给我发一份,我也把你看看,我做过很多ADO的程序,应该能帮得上你的忙
    [email protected]
      

  7.   

    看了你的程序,和“::CoInitialize(NULL);”这句没关系
    而是的pConn,pRst这两个变量定义的问题
    修改了你的程序,发给你了。
      

  8.   

    你在定义的时候为这两个变量CreateInstance了,而此时com环境还没有初始化
      

  9.   

    回:bohut(伯虎) 
    下载下来调试通过,不过设置断点,按 F10 调试的时候编译器报错说
    未处理异常:0xC0000005:写入位置 0xcccccccc 时发生访问冲突
    我再看看
      

  10.   

    找到错误了,是 GetModuleFileName(NULL, szDBPathName, 128);函数中的那个szDBPathName
    我声明的是 WCHAR *szDBPathName; 不知道这样可以不?编译器说这个是错误的指针
      

  11.   

    终于找到错误了,确实是 GetModuleFileName(NULL, szDBPathName, 128); 的问题,而且变量的声明也有点问题。这个得到的是程序路径的全名称,在加上我后来写的数据库名称,导致数据库配置不正确,由此抛出异常,谢谢。现在还在调试
      

  12.   

    一般都是使用在App类里的实例化里.你最好是使用
    if (!pState->m_bNeedTerm)
    {
       AfxOleInit(); // init ADO Link DataBase enviment
    }
    防止这个com重复的初始化