我的目标模块是从构建的可执行文件X.cpp和Y.cpp,这两个两个文件需要一个共同的.h文件:
extern HANDLE hPipe;
extern IMediaSample *pSave = NULL;
Run Code Online (Sandbox Code Playgroud)
但是当我构建模块时,我得到一个错误说:
Y.obj : error LNK2005: "struct IMediaSample * pSave" (?pSave@@3PAUIMediaSample@@A) already defined in X.obj
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
ken*_*ytm 14
extern IMediaSample *pSave = NULL;
Run Code Online (Sandbox Code Playgroud)
这不仅仅是一个声明.这将定义pSave为NULL.由于两者都.cpp包含.h,因此该变量将以2个翻译单位定义,从而导致冲突.
你应该把它重写为
extern IMediaSample *pSave;
Run Code Online (Sandbox Code Playgroud)
在.h,然后添加IMediaSample *pSave = NULL;正好一个.cpps.