我主要担心的是,我能够使用 VC++ 编写 C++ dll。现在 dll 出现在 Debug 文件夹中。
如何在其他 C++ 控制台应用程序中使用我的 DLL。如何添加引用或将 DLL 链接到应用程序。
还有一点,在创建 DLL 时,VC++ 向导给了我三个选项:
- 一个空的 DLL 项目
- 一个简单的 DLL 项目
- 导出一些符号的 DLL
现在根据来自 CP 的文章我使用了第三个选项。 (无法理解,因为该 dll 被 MFC 应用程序使用,一些在这个时间点上的进步有多么小)
我是否需要始终选择第三个选项?另外两个选项是什么意思?
最佳答案
不完全确定你的问题是什么但是:
使用哪个选项并不重要,重要的是向导为您做了什么;如果您使用第三个选项,那么向导会在您的头文件中创建一个位,如下所示:
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
其工作方式是,在 DLL 项目中,TEST_EXPORTS 在编译器选项中定义,因此 TEST_API 计算为 dllexport,从而告诉链接器导出这些符号。如果您将此 header 包含在另一个项目中,它会将 TEST_API 定义为 dllimport,它告诉编译器在运行时在 DLL 中链接到它。这种导出符号的#define 方法被广泛使用并且易于阅读。
为了在 DLL 中调用函数/类,您需要通过以下两种方式之一导出符号: a) 使用 __declspec(dllexport) [这似乎在几乎所有情况下都是更方便的选择]或 b) 在您的项目中使用 .DEF 文件
还想提一下,您需要在 .exe 文件的解决方案中包含 DLL 项目,或者由 DLL 编译生成的 .lib。
关于c++ - 如何从另一个 C++ win32 控制台应用程序调用 C++ Win32 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572874/