У меня не выгружается приложение. Проблемы в #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(); }
|
|