DLL中函式返回CString的問題

2021-09-30 04:01:17 字數 712 閱讀 2712

我用mfc做了個regular dll,其中乙個介面形如:

cstring getname(...);

或者:void  getname(cstring &);

應用程式一般這樣來呼叫: cstring name = getname(...);或者getname(name)

are removed during preprocessing.

原來應用程式使用use static linked mfc dll,而我的dll是use shared mfc dll,這就造成dll中heap和應用程式的heap不同,在dll中malloc出的位址返回到應用程式並被free,所以就assert了。

cstring name("足夠長度的字串");   // 如果這樣事先分配足夠長度,使用getname(cstring &)

//是沒有問題的。

根本的解決方法網上都說了:

在dll中返回物件時需要注意:  

1。exe端與dll端必須同為debug或release方式,不能交叉  

2。run   time   library必須一致,例如均為multi-threaded   dll  

但我試了試debug版本,只能同時配置為multi-threaded   dll才行,其他配置都會出錯。這是疑問1。還有一點不明,mfc庫中也有類似的函式介面,為什麼cwnd::getwindowtext(cstring &)卻沒這個問題呢?

delphi中dll返回string問題

有高手言 1.在dll中定義返回string字串的函式時,如果沒有特殊處理呼叫該函式 在退出呼叫該函式的過程 函式 事件 時,會出現以下錯誤 invalid pointer operator 2.當在單元中新增sharemem時,在退出程式的時候會出現同樣的錯誤 3.當在呼叫dll的專案檔案中 不是...

C string中的find 函式

1.string中find 返回值是字母在母串中的位置 下標記錄 如果沒有找到,那麼會返回乙個特別的標記npos。返回值可以看成是乙個int型的數 include include includeusing namespace std int main else 執行結果 2.返回子串出現在母串中的首...

C String建構函式

string 類的原型如下 class string string string string string const char str else 當初始化串存在的時候,為m data申請同樣大小的空間存放該串 string string const string other 拷貝建構函式,功能與...