正如标题所说,虽然我猜我的意思是“以后再使用它们。”
设置
我已经按照这个答案:
https://stackoverflow.com/a/13219631/696407
创建一个非常简单的dll
#include <stdio.h>
extern "C"
{
__declspec(dllexport) void DisplayHelloFromMyDLL()
{
printf ("Hello DLL.\n");
}
}
我现在有一个为发布而编译的dll:
当我通过dumpbin运行DllTest.dll时,我找到了这一行:
1 0 00001000 DisplayHelloFromMyDLL = _DisplayHelloFromMyDLL
使用DLL
要在新解决方案中使用该功能,我相信我必须
并且,在那里添加了.lib,下一步是......hvæt?
我的代码现在:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
while(1)
{
DisplayHelloFromMyDLL();
}
return 0;
}
但这不起作用。
编辑:我猜“不行”是模糊的。该函数获得Error: identifier "DisplayHelloFromMyDLL" is undefined
(旁边问题:我的功能是DisplayHelloFromMyDLL();
还是_DisplayHelloFromMyDLL();
?)
答案 0 :(得分:0)
要使用你的.dll,你需要两件事,一个头文件和一个.lib。
头文件是这样的,编译器知道某处有一个名为DisplayHelloFromMyDLL()
的函数。在这一点上它并不重要,只是你告诉编译器它在某个地方。链接器将处理where位。
.lib文件用于链接器。它告诉链接器DisplayHelloFromMyDLL()
存在于.dll中,并且(在您的情况下)dll的名称是DllTest.dll。当程序启动时,Windows加载程序将使用此信息将.dll加载到您的进程中,并执行任何地址修正,以确保在您的应用程序中调用DisplayHelloFromMyDLL()
调用.dll中的函数。
您实际上并不需要.dll来构建可执行文件,只是为了运行它。