社区
C++ Builder
帖子详情
dll出现“尚未调用Coinitialize”错误,应如何解决?
xiongwj
2003-01-20 02:51:43
dll中,封装有Form,以及数据库访问等。
...全文
141
7
打赏
收藏
dll出现“尚未调用Coinitialize”错误,应如何解决?
dll中,封装有Form,以及数据库访问等。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yousoft2013
2003-05-22
打赏
举报
回复
在你的unit上加上:
initialization
coinitialize(NULL);
finalization
counInitialize;
就OK了
ThinkX
2003-02-28
打赏
举报
回复
struct ComEnv
{
ComEnv() { CoInitialize(NULL); }
~ComEnv() { CoUninitialize(); }
};
在DllMain最开始或者之前
static ComEnv comEnv;
就解决了。
invalid
2003-02-27
打赏
举报
回复
dll加载的时候调用CoInitialize(NULL)?,在卸载的时候调用CoUninitialize(NULL)?
hopelhs
2003-02-27
打赏
举报
回复
UP
xiongwj
2003-01-20
打赏
举报
回复
怎么CoInitialize(NULL)?在程序哪个位置?调用哪个?
oishi
2003-01-20
打赏
举报
回复
我遇过!我不知道有没有更好的方法解决!
我是改用动态调用就好了!
jspring
2003-01-20
打赏
举报
回复
CoInitialize(NULL)不就行了?
C++中COM组件初始化方法实例分析
本文实例讲述了C++中COM组件初始化方法。分享给大家供大家参考。具体如下: 这里使用BCB 在使用TADOConnect等组件时需要进行初始化
调用
接口 : Co
Init
ialize
(NULL);//初始化COM套件 CoUn
init
ialize
();//释放COM套件 在
DLL
入口中
调用
: static bool isCo
Init
ialize
= false; //是否是自己进行的初始化 int WINAPI
Dll
EntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { if(reason==
DLL
Delphi中制作
DLL
中回调函数的
应
用
Delphi中制作
DLL
•一
Dll
的制作一般分为以下几步: 1 在一个
DLL
工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和
调用
后缀。 二参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出
调用
成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdcall声明后缀。 4 最好大小写敏感。 5 无须用far
调用
后缀,那只是为了与windows 16位程序兼容。 三
DLL
的初始化和退出清理[如果需要初始化和退出清理] 1
DLL
Proc[SysUtils单元的一个Pointer]是
DLL
的入口。在此你可用你的函数替换了它的入口。但你的函数必须符合以下要求[其实就是一个回调函数]。如下: procedure
Dll
EnterPoint(dwReason: DWORD);far;stdcall; dwReason参数有四种类型:
DLL
_PROCESS_ATTACH:进程进入时
DLL
_PROCESS_DETACH进程退出时
DLL
_THREAD_ATTACH 线程进入时
DLL
_THREAD_DETACH 线程退出时 在初始化部分写:
DLL
Proc := @
DLL
EnterPoint;
Dll
EnterPoint(
DLL
_PROCESS_ATTACH); 2 如Form上有TdcomConnection组件,就Uses Activex,在初始化时写一句Co
Init
ialize
(nil); 3 在退出时一定保证DcomConnection.Connected := False,并且数据集已关闭。否则报地址错。 四全局变量的使用 在widnows 32位程序中,两个
应
用程序的地址空间是相互没有联系的。虽然
DLL
在内存中是一份, 但变量是在各进程的地址空间中,因此你不能借助
dll
的全局变量来达到两个
应
用程序间的数据 传递,除非你用内存映像文件。 五、其他:
调用
方式按照标准的Windows
调用
方式. 六、关于参数传递 •Delphi程序之间
调用
DLL
,如果要用String类型的话,要在引用的单元加上ShareMem 单元。 •如果Delphi写的
DLL
供其他开发工具使用的话,不要使用String类型,用PAnsiChar类型。 尽量使用标准
DLL
接口。指的是传递的参数类型及函数返回类型不能是Delphi特有的, 比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不 能是包含有这些类型成员数据成员的对象类型,以避免可能的
错误
。如果使用了string类型或 动态数组类型,且
调用
方不是Delphi程序,则基本上会报错。如果
调用
方是Delphi但
调用
方或 被
调用
方没有在工程文件的第一包含单元不是ShareMem,也可能会出错。 七、关于回调Funciton 你可以把Callback函数看作是一种特殊的消息响
应
函数,一般来说我们不会自己
调用
这种函数, 而是有某些系统函数
调用
,而且不需要向后传递消息。 只要象C/C++这样支持函数指针的语言都 有回调函数的概念,它实际上是向被
调用
函数传一个你的函数地址,然后被
调用
函数向通过你传 入的函数地址来
调用
你的函数 。 以上是结构化回调,到高级语言Object Pascal、C++中回调函数并没有退出,反而得到延伸与 扩展,在面向对像中的回调,其实是指面向对像中类对像的事件,事件就是原始的回调函数。面 向对像, 将回调函数定义成事件过程,在程序引用对像时,若指定了对像的过程事件后,那么在 要进行事件触发的地方检查事件过程是否分配,如果分中的就执行事,也就是执行了回调函数。
GetOpenFileName Test
问题:在装有Adobe Acrobat Reader Version 7.0的XP SP2机器上运行一个程序,打开Open,Save,SaveAs对话框,把鼠标悬浮在一个文件上直到
出现
tips时程序马上关闭。
本程序专门测试这个问题,并提供了
解决
办法。
测试办法:
1、不定义USE_COM宏编译运行,可再现问题;
2、定义USE_COM宏编译,发现问题已
解决
。
解决
办法:
先
调用
Co
Init
ialize
() 或 Ole
Init
ialize
(),运行完成后,当然要
调用
对
应
的Un
init
XXX方法。
问题的根源在于一个pdf
DLL
需要COM环境。
易语言Js工具
易语言Js工具源码,Js工具,加载资源皮肤,检测,加载内存
DLL
,取
DLL
导出函数地址,动态
调用
子程序,取变量数据地址_字节集,加载,执行,计算表达式,
错误
信息,Co
Init
ialize
,CoUn
init
ialize
在VC中使用XMLHTTP
主 题: 在VC中使用XMLHTTP,怎样初始化,怎样建立连接?在线等。 我的一段代码在.NET中用C#已经调通,我想搬到VC++ 6.0上,但不知道任何各种写法规则。 C# 中为: MSXML2.XMLHTTP xmlHttp_ = new XMLHTTP(); xmlHttp_.open("PROPFIND", serverUrl, false, username, password); xmlHttp_.send(null); 放到VC++ 6.0 中
应
为什么? 以下是我写的,但运行出错。 #import "msxml4.
dll
" using namespace MSXML2; HRESULT hr; //MSXML2::IXMLHTTPRequest pIXMLHttpRequest; CString serverUrl ="http://services.msn.com/svcs/hotmail/httpmail.asp"; MSXML2::IXMLHTTPRequestPtr pIXMLHttpRequest; pIXMLHttpRequest.CreateInstance("Msxml2.XMLHTTP.4.0"); if (pIXMLHttpRequest==NULL) AfxMessageBox("pIXMLHttpRequest error"); try { // Create XMLHttpRequest object and
init
ialize
pIXMLHttpRequest. hr = pIXMLHttpRequest->open(_bstr_t(_T("PROPFIND")), _bstr_t(_T(serverUrl)), _variant_t(VARIANT_FALSE), _variant_t("test5_12"), _variant_t("1234567")); if(SUCCEEDED(hr)) ::MessageBox(NULL, _T("Success !"), _T(""), MB_OK); } catch(...) { //DisplayErrorToUser(); AfxMessageBox("error"); } 在
调用
方法open的时候出错! 回复人: masterz(www.fruitfruit.com) ( ) 信誉:273 2003-06-10 21:34:02Z 得分:20 ? #import "msxml.
dll
" #import "msxml2.
dll
" using namespace MSXML2; int main(int argc, char* argv[]) { printf("Test of XMLHTTP by masterz!\n"); Co
Init
ialize
(NULL); try { IXMLHTTPRequestPtr xmlrequest; xmlrequest.CreateInstance("Msxml2.XMLHTTP"); _variant_t varp(false); xmlrequest->open(_bstr_t("GET"),_bstr_t("http://www.csdn.net/expert/topic/855/855052.xml?temp=.176037"),varp); xmlrequest->send(); BSTR bstrbody; xmlrequest->get_responseText(&bstrbody); _bstr_t bstrtbody(bstrbody); printf("%s\n",(LPCTSTR)bstrtbody); } catch (_com_error &e) { printf("Description = '%s'\n", (char*) e.Description()); } CoUn
init
ialize
(); printf("program end\n"); return 0; } ///////Post with XMLHTTP/////////////////////// #import "msxml.
dll
" #import "msxml2.
dll
" #include "Atlbase.h" using namespace MSXML2; int main(int argc, char* argv[]) { printf("Test of XMLHTTP by masterz!\n"); Co
Init
ialize
(NULL); try { IXMLHTTPRequestPtr xmlrequest; //xmlrequest.CreateInstance("Msxml2.XMLHTTP"); xmlrequest.CreateInstance(__uuidof(XMLHTTP)); CComVariant vFalse(FALSE); CComVariant vNull(NULL); xmlrequest->open("POST", _bstr_t("http://211.157.102.21/member/logon.asp"),vFalse,vNull,vNull); xmlrequest->setRequestHeader("Content-Type:","application/x-www-form-urlencoded"); _bstr_t bsdata("name=xxx&pass=xxx&type=1");//use your login name and password xmlrequest->send(_variant_t(bsdata)); BSTR bstrbody; xmlrequest->get_responseText(&bstrbody); _bstr_t bstrtbody(bstrbody); printf("%s\n",(LPCTSTR)bstrtbody); //MessageBox(0,bstrtbody,"",MB_OK); } catch (_com_error &e) { printf("Description = '%s'\n", (char*) e.Description()); } CoUn
init
ialize
(); printf("program end\n"); return 0; }
C++ Builder
13,824
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章