【发布时间】:2011-07-29 21:53:53
【问题描述】:
所以我有这个 dll,其中包含我的程序的一些功能。称为 gc.dll 我在我的主项目中将其作为参考。在我的主项目中,我有 2 个头文件和 2 个源文件,
dx9d3d.h
main.h
main.cpp
dx9d3d.h
这是我在每个文件中包含的内容
dx9d3d.h:
#include "gc.h"
dx9d3d.cpp:
#include "dx9d3d.h"
main.h:
#include <Windows.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
#include "basics.h"
#include "dx9d3d.h"
main.cpp:
#include "main.h"
我不断收到我在 gc.h 中的 d3ddevice 和 directx 符号的多定义符号的链接器错误。我不知道如何将 gc.h 包含到 dx9d3d.h 中而不将它作为多定义符号:/ 请帮助我对这些链接器错误有点菜鸟。
这是 gc.h 中的代码
namespace xaD3D {
__declspec(dllexport) LPDIRECT3D9 d3d;
__declspec(dllexport) LPDIRECT3DDEVICE9 d3dDev;
__declspec(dllexport) bool initD3D(HWND hWnd);
}
这是错误
2>main.obj : error LNK2005: "struct IDirect3DDevice9 * xaD3D::d3dDev" (? d3dDev@xaD3D@@3PAUIDirect3DDevice9@@A) already defined in dx9d3d.obj
2>main.obj : error LNK2005: "struct IDirect3D9 * xaD3D::d3d" (? d3d@xaD3D@@3PAUIDirect3D9@@A) already defined in dx9d3d.obj
【问题讨论】:
-
gc.h 和 dx9d3d.h 里面有什么? -- 答案很可能就在那里。
-
请向我们展示确切的错误消息,并包括您定义这些对象的代码。头文件通常声明对象,而不是定义它们,因此它们通常在诊断链接器错误时并不重要。
标签: c++ linker directx undefined