Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > не выгружается приложение


Автор: __Sergey__ 21.12.2004, 01:23
У меня не выгружается приложение.
Проблемы в #pragma comment(linker, "-entry:main") вместе с ф-цией CoCreateInstance.
Если в конец дописать ExitProcess(0), приложение завершится, но
не вызываются деструкторы классов.
Может кто подскажет, что происходит и как правильно выйти из main(), при этом
#pragma comment(linker, "-entry:main") надо оставить.
Код

//====================== KAdoCnn.h ================================
#pragma once
#include <windows.h>
#include <initguid.h>
#include <adoid.h>
#include <adoint.h>
#include <atlbase.h>

#pragma  comment(lib, "adoid.lib")

class KAdoCnn
{
public:

   KAdoCnn();
   
   HRESULT Open(LPCTSTR lpszSource, LPCTSTR lpszUser = TEXT(""), LPCTSTR lpszPassword = TEXT(""));

   void    Close();

   ~KAdoCnn();

protected:
   CComPtr<ADOConnection> m_cnn;
};

//-----------------------------------------------------------------------------
__inline KAdoCnn::KAdoCnn()
{ m_cnn.CoCreateInstance( CLSID_CADOConnection ); }
//-----------------------------------------------------------------------------
__inline KAdoCnn::~KAdoCnn()
{}
//-----------------------------------------------------------------------------
__inline void KAdoCnn::Close()
{ m_cnn->Close(); }
//-----------------------------------------------------------------------------
__inline HRESULT KAdoCnn::Open(LPCTSTR lpszSource, LPCTSTR lpszUser, LPCTSTR lpszPassword)
{
   CComBSTR bstrSource = lpszSource, bstrUser = lpszUser, bstrPassword = lpszPassword;
   return m_cnn->Open( bstrSource, bstrUser, bstrPassword );
}
//====================== end KAdoCnn.h ================================


//====================== main.cpp ================================
//   Project options:
//     /nologo /ML /W4 /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /Fo"Release/" /Fd"Release/" /FD /c

#include "KAdoCnn.h"

#ifndef _DEBUG
#pragma comment(linker, "-entry:main")
#endif


void main()
{
   LPCTSTR lpszCnnStr = TEXT("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\\mybase.mdb");
   
   CoInitialize(NULL);

   KAdoCnn cnn;
   HRESULT hr = cnn.Open(lpszCnnStr);
   if (FAILED(hr))
   {
   CoUninitialize();
   return;
   }
   cnn.Close();
   CoUninitialize();
}


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)