私は、コンソールアプリケーションが複数のDLLから関数にアクセスする、複数のプロジェクト設定でテストを行ってきました。
DLLのヘッダーをコンソールアプリケーションに含める方法を考えました。私の現在の実装は次のとおりですが、管理するのが頭痛の種であり、エラーが発生することもあります。
- 各DLLプロジェクトには、「インクルード」というフォルダーがあります。
- コンソールアプリケーションプロジェクトは、各DLLプロジェクトのインクルードフォルダーを参照します(DLLの操作に関するmsdnガイドで提案されています)
- 各DLLプロジェクトには、その1つのプロジェクトのすべてのヘッダーを含む単一のヘッダーが含まれています
- 次に、コンソールアプリケーションはこれらの「マスターヘッダー」を#includeします
- すべてのプロジェクトはプリコンパイル済みヘッダー「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;
これにより、「マスターヘッダー」からヘッダーを除外し、コンソールアプリにトラブルメーカーを個別に含めることで、ハック修正できる無関係なランダムコンパイラエラーが発生することがあります。
何がもっとうまくできるかという提案?