我想从C++代码创建一个dll库,并在C程序中使用它。
我只想导出一个函数:
GLboolean load_obj (const char *filename, GLuint &object_list);
来自库的头文件:
#ifndef __OBJ__H__
#define __OBJ__H__
#include <windows.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glu.h>
#include <GL/glut.h>
#if defined DLL_EXPORT
#define DECLDIR __declspec(dllexport)
#else
#define DECLDIR __declspec(dllimport)
#endif
extern "C" GLboolean load_obj (const char *filename, GLuint &object_list);
#endif // __3DS__H__
在 .cpp 文件(库项目中)中,函数也被声明为:
extern "C" GLboolean load_obj (const char *filename, GLuint &object_list)
{
code...
}
在 VS 项目选项中添加 .lib 文件(链接器/输入/附加依赖项)。.dll 文件位于 .exe 所在的文件夹中。 当我编译 C 项目时,出现错误:
Error 1 error C2059: syntax error : 'string'
这是关于头文件中的"extern "C""部分的问题。
我尝试将头文件更改为:
extern GLboolean load_obj (const char *filename, GLuint &object_list);
那么
Error 1 error C2143: syntax error : missing ')' before '&'
Error 2 error C2143: syntax error : missing '{' before '&'
Error 3 error C2059: syntax error : '&'
Error 4 error C2059: syntax error : ')'
即使我将&更改为*,也会出现以下情况:
Error 6 error LNK2019: unresolved external symbol _load_obj referenced in function _main main.obj
我不知道为什么出错了,.lib、.h和.dll已经正确添加了。