Ученик-кочегар
Группа: Участник
Сообщений: 13
|
Доброго времени суток!
Имеется класс написанный на VC++, хочу перевести его на Builder. Помогите, пожалуйста, это сделать. В VC++ использовал ADODB, подключив библиотеку так
CODE |
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","EoF")
|
В Builder такое не прошло. Пришлось импортировать библиотеку через Project->Import Type Library, который создал Unit библиотеки Microsoft ActiveX Data Object 2.8 Library и подключил его к моему проекту.
Написал три строки:
CODE |
_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pConnection->Open(L"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=baza;Data Source=server", L"", L"", (adConnectUnspecified));
|
Прошелся пошагово с заходом в функции. На второй строке попадаю в хедер utilcls.h:
CODE |
// Create instance of interface via 'CoCreateInstance' with specified CLSID
//
template <class T, const IID* piid>
HRESULT TComInterface<T, piid>::CreateInstance(const CLSID& clsid, IUnknown* pOuter, DWORD dwClsContext)
{
Reset(); // Free any interface pointers
IUnknownPtr punk;
HRESULT hr = ::CoCreateInstance(clsid, pOuter, dwClsContext, IID_IUnknown, reinterpret_cast<LPVOID*>(&punk));
if (SUCCEEDED(hr))
{
hr = ::OleRun(punk);
if (SUCCEEDED(hr))
hr = punk->QueryInterface(GetIID(), reinterpret_cast<LPVOID*>(&intf));
}
return hr;
}
|
Функция CoCreateInstance не выполняеться успешно. И OleRun не выполняется.
И на третьей строке вылетает. Да, предварительно делал CoInitialize. А на VC++ это идет на ура.
Подскажите, кто знает, как работать с БД из Builder'а через ADO, но без VCL. Дайте ссылку на примерчик или направте куда рыть. Спасибо. |