做了个DLL(WIN32 Dynamic_Link Library方式创建的),做一个打开ACCESS数据库的函数
1。在stdafx.h 中加了#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。函数如下:
extern "C" int EditTest1(char *ConnStr,long DataResult)
{
::CoInitialize(NULL);
_ConnectionPtr m_pConn;
m_pConn.CreateInstance(__uuidof(Connection));
HRESULT hr=m_pConn->Open((_bstr_t)ConnStr,"","",adConnectUnspecified);
if (FAILED(hr))
{
::CoUninitialize();
return -1;
}
m_pConn->Close;
m_pConn=NULL;
::CoUninitialize();
return 0;
}
3。用VB调用,声明如下:
Public Declare Function EditTest1 Lib "DLLT1.dll" (ByVal ConnStr As String, ByVal DataResult As Long) As Long
4。调用函数如下:
Dim l_result As Long
l_result = EditTest1("Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=E:\MYTEST\CTEST\DLLT1\Debug\CardMake.mdb;UID=;PWD=", -1)
在DEBUG 到m_pConn->Open处,程序报如下的错误:
0XE06D7363:Microsoft c++ Exception
请指正!
1。在stdafx.h 中加了#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。函数如下:
extern "C" int EditTest1(char *ConnStr,long DataResult)
{
::CoInitialize(NULL);
_ConnectionPtr m_pConn;
m_pConn.CreateInstance(__uuidof(Connection));
HRESULT hr=m_pConn->Open((_bstr_t)ConnStr,"","",adConnectUnspecified);
if (FAILED(hr))
{
::CoUninitialize();
return -1;
}
m_pConn->Close;
m_pConn=NULL;
::CoUninitialize();
return 0;
}
3。用VB调用,声明如下:
Public Declare Function EditTest1 Lib "DLLT1.dll" (ByVal ConnStr As String, ByVal DataResult As Long) As Long
4。调用函数如下:
Dim l_result As Long
l_result = EditTest1("Provider=Microsoft.Jet.OLEDB.4.0.1;Data Source=E:\MYTEST\CTEST\DLLT1\Debug\CardMake.mdb;UID=;PWD=", -1)
在DEBUG 到m_pConn->Open处,程序报如下的错误:
0XE06D7363:Microsoft c++ Exception
请指正!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货