我用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 拷貝建構函式,功能與...