我尝试在Visual Studio 2013中创建简单的dll项目,就像在http://www.itcsolutions.eu/2009/12/10/how-to-create-a-dll-dynamic-link-library-in-c-as-visual-studio-2008-project/
中一样但是当我尝试构建解决方案时,它会出现错误:
error LNK1104: can not open file "D:\prj\dlltest1\Debug\dlltest1.lib" D:\prj\dlltest1\ConsoleApplication1\LINK ConsoleApplication1
但是dlltest1是dll-project。为什么有.lib文件?
答案 0 :(得分:0)
更新:没有生成库因为没有导出符号的原因。我刚检查了你的代码。 您应该有一个* .h文件来定义这样的导出符号。
#ifdef WIN32PROJECT1_EXPORTS
#define WIN32PROJECT1_API __declspec(dllexport)
#else
#define WIN32PROJECT1_API __declspec(dllimport)
#endif WIN32PROJECT1_API int fnWin32Project1(void);
答案 1 :(得分:0)
DLL编译将生成DLL和LIB文件。 LIB文件用于在编译时链接DLL;它不是运行时链接所必需的。
应用程序中的代码确定是否需要编译时或运行时链接:
如果您访问类似
的DLL函数__declspec(dllimport) someFunction(int firstArg, int secondArg)
然后您的编译器将同时需要.dll和.lib文件来链接到共享库,但在执行期间,只需要.dll。
但是,如果您使用DLL函数LoadLibrary
,GetProcAddress
和FreeLibrary
,则链接不需要.lib。