Ich möchte eine DLL-Bibliothek aus C++ Code erstellen und verwenden Sie in C Programm. Ich möchte nur eine Funktion exportieren:C++ DLL in C-Programm
GLboolean load_obj (const char *filename, GLuint &object_list);
Header-Datei aus der Bibliothek:
#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__
in CPP (in Bibliotheksprojekt) Funktion wird auch erklärt, wie:
extern "C" GLboolean load_obj (const char *filename, GLuint &object_list)
{
code...
}
Datei .lib wird in VS-Projektoptionen hinzugefügt (Linker/Eingabe/Zusätzliche Abhängigkeiten). .dll befindet sich in dem Ordner, in dem sich .exe befindet. Wenn ich kompilieren C-Projekt - Fehler:
Error 1 error C2059: syntax error : 'string'
Es handelt sich um einen Teil "extern "C"" in Header-Datei.
Ich habe versucht, auf Header-Datei zu ändern: dann
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 : ')'
und sogar
extern GLboolean load_obj (const char *filename, GLuint &object_list);
wenn ich & geändert zu * erschienen:
Error 6 error LNK2019: unresolved external symbol _load_obj referenced in function _main main.obj
I‘ Ich habe keine Ahnung, warum es falsch ist. .lib .h und .dll werden ordnungsgemäß hinzugefügt.
Ich habe eine Antwort finden: Fehler 6 Fehler LNK2019: nicht aufgelöstes externes Symbol _load_obj in Funktion _main verwiesen main.obj Weil ich Bibliotheksprojekt statische Bibliothek kompiliert wurde und dann Bibliothek DDL und accidentyl Lib war ersetzt durch eine kleinere von der DLL-Bibliothek erstellt ... – mmatloka