社区
C++ 语言
帖子详情
vector作为参数,调用时为空
sun2058
2009-07-30 05:37:38
我用VC++写DLL来处理业务逻辑,用BCB6.0来写界面操作。由于要插入业务单的明细,用到了VECTOR来存放业务单明细。BCB将VECTOR作为参数传递给DLL,在DLL的DEBUG中,VECTOR为空?这是为什么?
...全文
489
18
打赏
收藏
vector作为参数,调用时为空
我用VC++写DLL来处理业务逻辑,用BCB6.0来写界面操作。由于要插入业务单的明细,用到了VECTOR来存放业务单明细。BCB将VECTOR作为参数传递给DLL,在DLL的DEBUG中,VECTOR为空?这是为什么?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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实现可能不一样吧。
C++中STL
vector
总结
本文主要从
vector
的基础用法、
vector
作为函数返回值、
vector
作为函数
参数
三个方面进行介绍,有任何不当之处,欢迎指教。 一、
vector
基础用法
vector
是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种...
std::
vector
传递dll
参数
异常-长度超限
如果你
调用
dll中的函数,使用了
vector
传递
参数
时,报错“
vector
的size异常,长度超限” 代码位置 “_THROW(length_error, "
vector
<T> too long")”。 那么有可能你也遇到了
vector
的debug版与release版不匹配问题。
vector
作为
参数
传递到dll问题
最近的一个项目中遇到了
调用
别人的sdk接口(dll库)而传给我的是一个
vector
指针,用完之后还要我来删除的情况。这个过程中首先就是在我的exe中将其
vector
指针转为相应指针再获取
vector
中相应的数据问题,始终都获得...
vector
(向量)基本操作
vector
作为
参数
的三种传参方式 c++中常用的
vector
容器作为
参数
时,有三种传参方式,分别如下(为说明问题,用二维
vector
): function1(std::
vector
<std::
vector
<int> > vec),传值 function2(std::...
vector
数组 传递 引用 指针
参数
一、一维
vector
<int> vec; 1. void deal(
vector
<int> vec ); 2. void deal(
vector
* pvec ); 3. void deal( const
vector
* ... //
调用
时不会
调用
拷贝构造函数 4. void deal(
vector
<int>& vec ); 5. void deal( c
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章