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'...
感谢您的阅读。