我假设如果我收到第 3 方 DLL,我还应该收到以下内容:
1) 带有函数原型的标头
2) 静态链接库或导入库(与 DLL 相同的基本名称,但扩展名为 .LIB)
我的困惑是我不明白如何将一个 Dll 链接到另一个 C++ DLL 项目并构建它以正确链接依赖项。我从哪里得到函数原型?对于我的 DLL 项目,我使用的是 .DEF 文件,而不是使用 __declspec(dlliexport)。将 DLL 链接到我的 C++ DLL 项目的绝对最低要求是什么?
我知道当前的共识(以及我对 SOF 的研究)是:
1) 包含获得外部函数原型的第 3 方头文件(我没有)。2) 通过项目属性表添加 .LIB 文件(在 Visual Studio 2010 中)。
这是要走的路吗?我需要将 DLL 复制到可执行文件夹吗?正确的程序是什么?当我自己尝试这样做时,有人可以帮助我吗?
更新
DLL_A.h
extern void this_is_dll_A(void); // Prints DLL_A
DLL_A.c
#include <stdio.h>
#include "Dll_A.h"
void this_is_dll_A(void)
{
printf("THIS IS DLL A\n\n\n");
}
我将以下 def 文件用于 Dll_A 项目
LIBRARY Dll_A
EXPORTS
this_is_dll_A @1
DLL_B.h
#include "Dll_A.h"
extern void this_is_dll_B(void);
我在属性表中添加了 Dll_A.h 头文件的包含文件夹。此外,链接器选项中的 .lib 文件和包含文件夹。但没有 DLL。
DLL_B.c
#include <stdio.h>
#include "Dll_B.h"
void this_is_dll_B(void)
{
printf("This is dll B...and...\n\n");
this_is_dll_A();
}
我为我的 Dll_B 项目使用 d_b.def 文件
LIBRARY Dll_B
EXPORTS
this_is_dll_B @1
没有进口?!不确定这是否正确。
在我的 Dll_B 项目中,我不会将我的文件复制Dll_A.dll
到Debug
许多网站包含 SOF 建议的文件夹中。
它构建良好。问题是我不确定我是否可以/应该在没有头文件的情况下这样做。另外,如果我要将 Dll_B 链接到 VS2010 中的可执行应用程序项目,我应该怎么做。