//*****************test.h**********************
#include "aaa.h"
class AFX_EXT_CLASS Ctest
{
public:
...
char * m_szPath;
BOOL Init(void);
void Quit(void);
BOOL Read(char *buf);
};
//******************************************
现在一个工程demo,包含demo.cpp和demo.h,调用test
demo.h中include了test.h,
//****************demo.h**********************
#include "aaa.h"//和test.h里面的aaa.h不一样,不在同一个位置
#include "test.h"
Ctest *pCtest;
//******************************************
//*****************demo.cpp*********************
...
pCtest->Init();
pCtest->Quit();
pCtest->Read(buf);
...
//******************************************
demo.h本身include了一个同名的aaa.h,但是内容不一样,导致了冲突,编译不了。
但是修改一下test.h,注释#include "aaa.h",甚至注释char * m_szPath;后都能编译,而且能正常使用。
//*****************test.h修改**********************
//#include "aaa.h"
class AFX_EXT_CLASS Ctest
{
public:
...
// char * m_szPath;
BOOL Init(void);
void Quit(void);
BOOL Read(char *buf);
};
//******************************************
如果把demo.cpp调用了的函数也注释,就无法编译,会报错
//*****************test.h修改**********************
//#include "aaa.h"
class AFX_EXT_CLASS Ctest
{
public:
...
// char * m_szPath;
// BOOL Init(void);
void Quit(void);
BOOL Read(char *buf);
};
//******************************************
test.lib 和 test.dll是没有改变的,难道修改test.h不会影响test.dll的使用吗?test.h只是提供一个原型吗?头文件,导入库,动态库在编译和运行的时候都是怎样一个过程?
学艺不精,还请各位高手指点指点,不胜感激。
2 个解决方案
#1
看了半天,没懂要表达的意思
推荐本书:《程序员的自我修养——链接、装载与库》
推荐本书:《程序员的自我修养——链接、装载与库》
#2
好像不错 准备看 谢谢
#1
看了半天,没懂要表达的意思
推荐本书:《程序员的自我修养——链接、装载与库》
推荐本书:《程序员的自我修养——链接、装载与库》
#2
好像不错 准备看 谢谢