注册 登录
编程论坛 C++教室

好吧,终于轮到我出事了.函数内部生命周期~~

天使梦魔 发布于 2014-02-16 19:54, 690 次点击
用的是vs2008,它的安全审核实在太高了,也出事了.
做的是一个DLL文件,因为DLL要适用于非lib版的编译器链接,所以输出的时候强制以C形式  extern "C"
万恶的事情来了,C里面没有class,我不能输出类.(我特么本来还要重载函数的,结果也不行)
也就是说我现在只能以函数形式做接口.

我有N多个函数是以字符串形式返回的,但问题是返回的值必须储存在函数以外.我又没有办法用类去自动化.
储存在函数内部就直接超出生命期了.我不希望DLL单独输出该变量地址.
而且为了方便,EXE一次性读完返回值就储存在自己的内部,而DLL部分释放.
特么肿么办?
3 回复
#2
yuccn2014-02-17 08:31
如果dll内部带出来的内存,再提供一个对应的free函数就行了。

和dll的接口,可以用导出函数 带进一个 IN 的参数接口,通过参数把数据带出来就行了,win api大多数都是这样的
#3
天使梦魔2014-02-18 15:40
前面我也这样想过,但如果我忘记呼叫这个函数就会有内存泄露,一点也不完美。
后来我用参数的形式返回,只能返回string,长度可以用成员函数测量。但没办法用char*长度不知道。
要么就再导出一个变量,这样太不和谐了,一点智能化也没有。
问题是返回string类已经终结了跨语言开发,后来想想这样已经没意义了最多同语言忽视掉静态库。
特么的哥怒删extern "C"
喜见类导出
#4
yuccn2014-02-19 12:03
通过std::string 带回来 有弊端的,如果stl 用了copy on write 技术,就很容易出事。
可以看看这个文章:
http://blog.
1