【发布时间】:2012-09-23 04:39:59
【问题描述】:
我正在尝试在我的头文件中为 c++ 类使用外部“C”函数。
当我编译时,我不断收到错误
duplicate symbol _currentInstance in:
main.o
GLHandler.o
我以为我有合适的守卫,但似乎无法弄清楚为什么会发生这种情况。任何帮助将不胜感激。
这是头文件。
#ifndef GLHANDLER_H
#define GLHANDLER_H
#include "LoadedObject.h"
#ifdef __cplusplus
extern "C" {
void displayCallback();
}
#endif
class GLHandler {
private:
LoadedObject *object;
public:
GLHandler(LoadedObject *);
void initializeVBO(LoadedObject *);
void renderObject(struct model *);
void displayFunction(void);
model *createModel(void);
void setupDisplayCallback();
};
GLHandler *currentInstance;
#ifdef __cplusplus
}
#endif
#endif
编辑:David 很快指出,extern GLHandler *currentInstance 修复了错误。
【问题讨论】:
-
也许应该是
extern GLHandler *currentInstance;? -
你肯定在 main.c 和 GLHandler.c 中实现了这个函数。或者你把它放到一个头文件中而不是内联它。
标签: c++ extern include-guards