我一直在用多个项目设置测试东西,其中控制台应用程序访问来自多个 DLL 的函数。
我考虑过如何在控制台应用程序中包含 DLL 的标头。我目前的实现如下,但管理起来很头疼,甚至有时会遇到错误:
- 每个 DLL 项目都有一个名为“Include”的文件夹
- 控制台应用程序项目引用每个 DLL 项目的 Include 文件夹(如 msdn guide to working with DLLs 所建议的)
- 每个 DLL 项目都包含一个标头,其中包含该项目中的所有标头
- 然后控制台应用程序#includes这些“主标头”
- 每个项目都使用预编译的头文件“stdafx”并且每个文件都包含它。
在我开始重载运算符之前效果很好。我相信悲痛是由预编译的标头以某种方式引起的,这是我当前使用 stdafx 的示例:
#define DLL // Found in every DLL, not in the console project
#ifdef DLL
#define DLLEI __declspec(dllexport)
#else
#define DLLEI __declspec(dllimport)
#endif
#include <iostream>
#include <vector>
#include "Include\Engine.h"
using namespace std;
有了这个,我有时会得到一些不相关的随机编译器错误,我可以通过从“主标头”中排除标头并在控制台应用程序中单独包含麻烦制造者来修复这些错误。
建议有什么可以做得更好的?