1,问题
问题一:
在一个MFC应用程序exe中,调用另一个DLL中的函数,函数中的一个形参是string类型的,每次调用都会出现乱码或者NULL的情况
调用前:
调用后:
以STL通过修改编译选项验证了这个问题。string在exe赋值的时候需要释放掉原来的内存空间,然后在DLL再申请新的内存空间,所以看到是NULL
注意,假如换成string对象赋值
std::string s = "getRouterRtpCapabilities";
send(s, body, promiseObj。。。
这样就和问题二一致了
问题二:
调用vector的引用
dll提供的接口
void getDevicesList(vector<string>&list)
exe调用
void main()
{
int i=0;
{
vector<string>list;
getDevicesList(list)
}
//释放vector崩溃了
int j=0;
}
2,原因:
不同的模块各自有一份C运行