C++コードからdllライブラリを作成してCプログラムに使用したいと思います。 私は唯一の関数をエクスポートしたいと思います:ライブラリーからCプログラム内のC++ DLL
GLboolean load_obj (const char *filename, GLuint &object_list);
ヘッダファイル:
extern "C" GLboolean load_obj (const char *filename, GLuint &object_list)
{
code...
}
:.cppファイルで
#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__
は、関数(ライブラリプロジェクトに)としても宣言されています
ファイル.libがVSプロジェクトオプション(リンカー/入力/追加の依存関係)に追加されています。 .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が正しく追加されています。
私は答えを見つけました: エラー6エラーLNK2019:未解決の外部シンボル私は静的ライブラリにライブラリプロジェクトをコンパイルしたため、関数_mainのMAIN.OBJ で参照して、DDLライブラリとaccidentyl .libファイルにした_load_obj dllライブラリによって作成されたより小さいものに置き換えられます... – mmatloka