_ConnectionPtr ,到底是什么东西?

sungengyu 2005-04-21 05:06:53
程序用了一个动态库,出现了下面的错误:

error LNK2001: unresolved external symbol "int __stdcall Login(class _com_ptr_t<class _com_IIID<struct _Connection,&struct __s_GUID _GUID_00000550_0000_0010_8000_00aa006d2ea4> > &)" (?PACSLogin@@YGHAAV?$_com_ptr_t@V?$_com_IIID@U_Conne
ction@@$1?_GUID_00000550_0000_0010_8000_00aa006d2ea4@@3U__s_GUID@@A@@@@@Z)
../Debug/Test.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.


Login 是一个动态库的导出函数。很奇怪,别的导出函数都能用,唯独这个用不了。

函数声明 : BOOL __stdcall PACSLogin(_ConnectionPtr&) ;

这个 _ConnectionPtr , 到底是个什么东西?

另外我想用一个以连接的 _ConnectionPtr 做参数,应该怎么写?

谢谢。
...全文
502 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sungengyu 2005-04-22
  • 打赏
  • 举报
回复
asese(一刀) : 加上 extern "C" ,果然好用了,谢谢!!!!!!!

能否简单解释一下原因?



非常高兴,给帖子加100分。
sungengyu 2005-04-22
  • 打赏
  • 举报
回复
算啦,也许应该看 _ConnectionPtr 的定义。
结贴。
llm06 2005-04-22
  • 打赏
  • 举报
回复
extern "C"?
奇怪,不应该阿。

你想改变指针,应该传递指针的指针把
sungengyu 2005-04-22
  • 打赏
  • 举报
回复
ft

_ConnectionPtr 把取址运算符也重载了?

取地址取不到,晕。
asese 2005-04-21
  • 打赏
  • 举报
回复
试试 extern "C"
asese 2005-04-21
  • 打赏
  • 举报
回复
大概是DLL的导出的问题吧,与COM无关

"而我在程序中直接定义函数,用 _ConnectionPtr 做参数,就可以用。"
sungengyu 2005-04-21
  • 打赏
  • 举报
回复
xhzxlqt(真的真的好想你) :这个地方是贴的时候把 PACS 删掉了 :)

dfyang() , iamknight(侠客) ,Practise_Think(时代“过客”) :
谢谢,我想看里面的实现,但是看不懂,很郁闷。
另外也请问 _ConnectPtr 是否可以直接做参数传递(不用指针或引用)。

sungengyu 2005-04-21
  • 打赏
  • 举报
回复
我写了一个动态库,导出了一个函数,此函数以 _ConnectionPtr 做参数。
但是别的程序调用时,却有上面的错误提示。
而我在程序中直接定义函数,用 _ConnectionPtr 做参数,就可以用。

另外更重要的问题是:如果我这个动态库能否给 Delphi 调用?
我对数据库不熟,ADO也不熟,也没用过 Delphi ,不知道该怎么写。

sungengyu 2005-04-21
  • 打赏
  • 举报
回复
谢谢,我想问:如果 _ConnectionPtr 是智能指针,那么把智能指针做参数传递,会不会导致原来的智能指针失效?
因为智能指针的拷贝构造函数,会让自身不再指向任何东西。
那么把智能指针做参数(不用引用或指针),函数调用时,应该产生一个临时变量,比如
func(_ConnectionPtr) , 按下面方法调用时:

_ConnectionPtr conn ;
func(conn) ; // 此处会不会产生一个临时变量 temp ,导致 temp = conn ; 的调用?

对原来的 conn 会不会有什么影响?

谢谢。
Practise_Think 2005-04-21
  • 打赏
  • 举报
回复
简单地说就是COM指针!!
iamknight 2005-04-21
  • 打赏
  • 举报
回复
指向Connection 接口的COM智能指针

试试楼上的方法
xhzxlqt 2005-04-21
  • 打赏
  • 举报
回复
PACSLogin(_ConnectionPtr)
dfyang 2005-04-21
  • 打赏
  • 举报
回复
_ConnectionPtr-------com 对象指针
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧