vector作为参数,调用时为空

sun2058 2009-07-30 05:37:38
我用VC++写DLL来处理业务逻辑,用BCB6.0来写界面操作。由于要插入业务单的明细,用到了VECTOR来存放业务单明细。BCB将VECTOR作为参数传递给DLL,在DLL的DEBUG中,VECTOR为空?这是为什么?
...全文
489 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2009-07-31
  • 打赏
  • 举报
回复
珍惜生命,远离扩展dll,只使用纯C接口的标准dll。
yxq281426250 2009-07-31
  • 打赏
  • 举报
回复
关注中>>>
sun2058 2009-07-31
  • 打赏
  • 举报
回复
我没有用接口,直接把DLL的方法以EXTERN "C" 的形式抛出来的
extern "C" int __declspec(dllexport) Insert(A *a,B *b,const char* subshopNo);
A是一个类,B是一个继承了vector的类
在VC工程中,这个方法是可以用的,但是用BCB去调用DLL中这个方法时,a的值可以正确传进去,b的值就为空了。而且在CLIENT中如果b中就有一个对像,在BCB传到DLL中后会有N条对象?
littleliang 2009-07-31
  • 打赏
  • 举报
回复
不同的编译器,对C++语言的实现会有所不同,在不同语言写的模块之间进行通讯时,建议只使用C约定。
f22fbi 2009-07-31
  • 打赏
  • 举报
回复
LZ可能要把接口改成C的了
sun2058 2009-07-31
  • 打赏
  • 举报
回复
vector传入前数据是存在的,在DLL的DEBUG中,全变成???这个了
yshuise 2009-07-31
  • 打赏
  • 举报
回复
《Imperfect C++》讲了。
yshuise 2009-07-31
  • 打赏
  • 举报
回复
c++代码经过处理,如函数名字,经过name handling之后(不像c,不是二进制代码),不能作为调用接口。
ahao 2009-07-31
  • 打赏
  • 举报
回复
这样的接口,推倒重来吧
sun2058 2009-07-31
  • 打赏
  • 举报
回复
顶顶
zbihong 2009-07-31
  • 打赏
  • 举报
回复
不懂!顶上!
fallening 2009-07-31
  • 打赏
  • 举报
回复
看起来是一个bug

sun2058 2009-07-31
  • 打赏
  • 举报
回复
UP上去
jixingzhong 2009-07-30
  • 打赏
  • 举报
回复
在vector传入前后输出进行查看一下
蒋晟 2009-07-30
  • 打赏
  • 举报
回复
DLL接口应该用C或者COM,C++类在不同模块中可能内存布局不一样。
灌水九段 2009-07-30
  • 打赏
  • 举报
回复
这只能靠一步步调试才能看出问题吧
yuyunliuhen 2009-07-30
  • 打赏
  • 举报
回复
遇到过此情况
不过是在做游戏服务器中数据超过封包大小的时候,VECTOR突然无效了
帮顶
晨星 2009-07-30
  • 打赏
  • 举报
回复
DLL参数中都用上C++的模板类了。。。
VC的STL跟BCB的STL实现可能不一样吧。

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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