最初の簡単なセットアップ:2つのVS2012プロジェクトがあります。ここで、プロジェクトAのプロジェクトBのクラスを使用します。プロジェクトBをAのプロジェクト依存関係リストに追加し、必要に応じてヘッダーをインポートしました。(例:#include ".. \ src-pool \ Coords.h";)。
これまでのところ、とても良いです-コンパイラエラーはありません。しかし、プロジェクトをビルドしようとすると、いくつかのリンカーエラーが発生します。
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall Coords::Coords(double,double)" (??0Coords@@QAE@NN@Z)" in Funktion ""public: void __thiscall TileDownloader::calculateBounds(double *,int)const " (?calculateBounds@TileDownloader@@QBEXPANH@Z)". C:\Users\username\documents\visual studio 2012\Projects\CPPHA\project\TileDownloader.obj
申し訳ありませんが、これはVSのドイツ語版です。「VerweisaufnichtaufgelöstesexternesSymbol」とは、次のことを意味します。未解決のexternシンボルへのリンク。
何か案は?=)
これを実行します(これは、エクスポートして他のプロジェクトで使用したいクラスです)
Coords.h
#pragma once
#include <iostream>
#ifdef EXPORT_MYCLASS
#define MYCLASSEXPORT __declspec(dllexport)
#else
#define MYCLASSEXPORT __declspec(dllimport)
#endif
class MYCLASSEXPORT Coords
{
public:
Coords(double lat, double lon);
~Coords(void);
double getLon() const;
void setLon(double val);
double getLat() const;
void setLat(double val);
void printInfos() const;
private:
double lat, lon;
};
しかし、「不整合なdllエクスポート」という警告と同じエラーが表示されます。申し訳ありませんが、C++は初めてです
こんな風に使いたい
#include "..\src-pool\Coords.h"
class TileDownloader
{
public:
TileDownloader(void);
~TileDownloader(void);
void calculateBounds(double* array, int zoomLevel) const;
void downloadTiles() const;
private:
double maxLat, maxLon, minLat, minLon;
};