0
環境:VC2005
我遇到了這個問題,在我的項目發現循環依賴時(這兩個dll引用對方),所以分兩種一個dll到兩個dll的。
用例子來解釋:
typedef struct { <br>
char myFileName[MAX_PATH];
} MyStructure;
前:
MyHeader.h
MyStructure globalStruct;
後:
MyCommon.h
#ifdef _MYGLOBAL_
#define API __declspec(dllexport)
#else
#define API __declspec(dllimport)
#endif
API extern MyStructure globalStruct;
MyGlobal.c
API MyStructure globalStruct;
MySpecific.c
API MyStructure globalStruct;
失敗代碼變更後:(在特定DLL的代碼運行)
handle = LoadLibrary(globalStruct.myFileName);
我證實globalStruct.myFileName值同樣的(至少真實的話)。
更改後,我無法直接通過調試器訪問該值。因此,爲了在調試器中看到值,我將其拷貝到臨時本地char []變量中。然後,我發現價值之前和價值之後的尾巴啞字符是不同的。
之前:
d:[我的路徑] '0'(炭端空)'0' '0' ... 後:
d:[我的路徑] '0'(炭端null)'-3''-3''-3'...
感謝您的閱讀。