Visual c++ LNK2001&;LNK1120当在项目中包含DLL时-MSVC++;
我有一个DLL和lib文件。我已经将它们包含在根源目录中,并通过其他依赖项添加了lib引用。但是,我得到以下错误:Visual c++ LNK2001&;LNK1120当在项目中包含DLL时-MSVC++;,visual-c++,dll,extern,lnk2001,Visual C++,Dll,Extern,Lnk2001,我有一个DLL和lib文件。我已经将它们包含在根源目录中,并通过其他依赖项添加了lib引用。但是,我得到以下错误: 1>main.obj : error LNK2001: unresolved external symbol "class game::c_State game::state" (?state@game@@3Vc_State@1@A) fatal error LNK1120: 1 unresolved externals 从“engine.h”中引用此项: 在“state.
1>main.obj : error LNK2001: unresolved external symbol "class game::c_State game::state" (?state@game@@3Vc_State@1@A)
fatal error LNK1120: 1 unresolved externals
从“engine.h”中引用此项:
在“state.cpp”(来自DLL的源代码)中,声明为
namespace game
{
c_State state;
//clipped for relevance
}
我是否需要将DLL放在某个特定的位置?Windows知道去哪里看吗?我在属性中找不到专门引用DLL文件的地方,只有lib文件
另外,在声明变量或仅声明函数时是否需要_declspec(dllexport)
提前谢谢 您必须将_declspec(dllexport)应用于定义,而不是声明。另外,在另一个项目中,该声明需要uu declspec(dllimport)。因此在.h文件中:
#undef EXPORT
#ifdef FOO_EXPORTS
# define EXPORT __declspec(dllexport)
#else
# define EXPORT __declspec(dllimport)
#endif
extern EXPORT int shared;
在DLL源代码文件中:
__declspec(dllexport) int shared;
在DLL项目中使用project+属性、C/C++、前处理器。将FOO_导出添加到预处理器定义。您必须将u declspec(dllexport)应用于定义,而不是声明。另外,在另一个项目中,该声明需要uu declspec(dllimport)。因此在.h文件中:
#undef EXPORT
#ifdef FOO_EXPORTS
# define EXPORT __declspec(dllexport)
#else
# define EXPORT __declspec(dllimport)
#endif
extern EXPORT int shared;
在DLL源代码文件中:
__declspec(dllexport) int shared;
在DLL项目中使用project+属性、C/C++、前处理器。将FOO_导出添加到预处理器定义中。谢谢。我假设ifdef和else语句是为了可移植性。如果我决定在Linux下编译引擎,我可以简单地删除FOO_导出,然后(假设其他可移植代码)编译。谢谢。我假设ifdef和else语句是为了可移植性。如果我决定在Linux下编译引擎,我可以简单地删除FOO_导出,然后(假设其他可移植代码)编译。