Я хотел бы создать библиотеку dll от C++ и использовать его в C. Я хотел бы экспортировать только одну функцию: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...
}
Файл .lib добавлен в опции проекта VS (Linker/Input/Additional dependencies). .dll находится в папке, где находится .exe. Когда я компилирую проекта C - ошибка:
Error 1 error C2059: syntax error : 'string'
Речь идет о части «Экстерн„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 добавлены правильно.
Я нашел ответ на: Ошибка 6 Ошибка LNK2019: неразрешенный внешний символ _load_obj ссылки в функции _MAIN main.obj Потому что я компиляции проекта библиотеки статической библиотеки, а затем к DDL библиотеке и accidentyl .lib был заменен на меньший, созданный библиотекой dll ... – mmatloka