.cpp/header ファイルを分離することから、定義をヘッダー ファイルだけに結合することへと変更しなければならなかったプロジェクトがあります。最初にcppファイルの内容をヘッダーファイルにコピーしようとしましたが、私のIDE(VS2012エクスプレス)がループに陥り、ヘッダーファイルにそれ自体が含まれていると言われたため、インクルード「class.h」を削除すると、 Class::functionname の場合、Class を認識できませんでした。最終的に、ヘッダー自体で定義を定義することにしました。
class Thing {
public:
void func { code; }
}
これにより、プロジェクトでのコンパイルの問題が修正されました。問題は、テスト プロジェクト (WinUnit) があり、関数にアクセスできなくなったことです。プロジェクトは以前は静的ライブラリであり、それに応じてリンクされていましたが、.cpp ファイルがないため、プロジェクトは .lib を生成しませんでした。ダイナミック リンク ライブラリに変更しようとしましたが、同じ問題 - dll が生成されませんでした。そこで、プロジェクト参照を追加しましたが、#include "Class.h" と入力すると、クラス ファイルが認識されたように見えました。
私の問題は、まだクラスをコンパイルしないことです。テスト プロジェクトの .cpp ファイル内のクラス名はまったく認識されません。テスト プロジェクトにヘッダー ファイルを追加しようとしましたが、まだ満足していません。ヘッダーがある場所を指すように追加のインクルードディレクトリを設定しようとしましたが、うまくいきません。
どうすればこれを達成できますか?
編集:まだスタックしているので、SSCCEを作成しました。正常に機能し、追加のINcludeディレクトリのヘッダーファイルディレクトリにテストプロジェクトを指定し、機能しました。メイン プロジェクトは正常にコンパイルされますが、Intellisense エラーがあることに気付きました - 識別子 "ClassName" が未定義です。他のすべてのクラスは、他のクラスを認識します。#include "className" が存在します。テスト プロジェクトをビルドすると、最初のエラーは次の行に関連しており、Intellisense エラー: エラー 1 エラー C2143: 構文エラー: ';' がありません。前 '*'
実際の行は次のとおりです。 ClassName * obj; - プライベート変数です。
テスト プロジェクトには 629 個のエラーがあります - その他のコード: c4430、c2061。これらは、クラスが認識されないことに関連する最初の問題の単なる副作用だと思います...迷ってしまい、これに失敗したことを撤回して再考することができます....
編集: インテリセンス エラーを修正し、すべてのエラーが Testproject に含まれるようになりました - 最大 826 エラーになりました。インクルード時にヘッダー ファイルを参照しますが、クラス名は認識しません。エラー コード: c2061、c2065、c2923 など