c++ - 使用多个项目构建 DLL 的正确方法?

标签 c++ dll

好的,所以我正在尝试将一些项目转换为 DLL。这些都是 visual studio 2008 项目,并且都是用 C++ 编写的。

我们有 9 个不同的项目(都在 Visual Studio 2008 中的 1 个解决方案下)。例如:

RasterTools\
 RasterDataset.h
 RasterDataset.cpp
 Point.h
 Point.cpp
 <... insert like 50 more cpp files ...>

CoreTools\
 Image.h
 Image.cpp
 CoreUtilities.h
 CoreUtilities.cpp
 <... insert more ...>

<... insert 7 or more projects ...>

现在的问题是某些项目使用其他项目的类。比如Image.h使用了Point.h,CoreUtilities.h有一些处理Points的函数。当您有多个相互交织的项目时,构建 DLL 的正确方法是什么。

基本上我们想要的是:

CoreTools.dll
RasterTools.dll
<other projects.dll>

我了解如何通过宏处理 __declspec(dllexport) 和 dllimport。但是,当我尝试构建例如 CoreTools.dll 时,我会在使用该项目中未包含的类或功能的任何地方出现链接器错误。例如,在构建 coreTools.dll 时,我收到任何点类函数的链接器错误。

我该如何处理?

编辑

我试过了,基本上我注意到几乎所有的复选框都变灰了,因为它会导致循环依赖。 :(

最佳答案

如果您右键单击引发链接器错误的项目并选择“项目依赖项...”,您将看到解决方案中所有其他项目的列表。

选中您需要链接的 (DLL) 项目旁边的框,Visual Studio 将自动链接到它(并确保在客户端之前构建依赖项)。

关于c++ - 使用多个项目构建 DLL 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1561424/

相关文章:

python - 无法在 python 中导入/安装任何库

c - C 中的 VBA 和 dll : Strategy for more responsive and controllable Excel performance?

linux - 加载前检查 Linux 共享对象的签名

PHP:如何解析 MySQL "LEFT JOIN"?

c++ - 如何在 C++ 项目中使用 sqlite3.c?

c++ - 比较悬挂指针是否合法?

c++ - 如何分配/复制一个 Boost::multi_array

c++ - 最小化锁争用 c++ std::map

c# - Unity - 如何使用 c++ dll?

python加载静态库