[英]C++ linker error when linking two object files from differen projects containing the same symbol
[英]VisualStudio 2012 - two projects -> linker error (C++)
首先是我的簡單設置:我有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的德語版本。 “ Verweis auf nichtaufgelöstesexternes Symbol”的意思是:鏈接到未解析的extern符號。
有任何想法嗎? =)
完成此操作(這是我要導出並在其他項目中使用的類)
坐標
#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;
};
鏈接器找到類方法需要發生三件事:
在標頭中聲明導出的常見做法:
#ifdef EXPORT_MYCLASS
#define MYCLASSEXPORT __declspec(dllexport)
#else
#define MYCLASSEXPORT __declspec(dllimport)
#endif
class MyClass
{
MYCLASSEXPORT MyClass();
}
然后,您可以在導出dll的預處理程序定義中定義該預處理程序參數。
在Visual Studio中:
項目屬性->配置屬性-> C / C ++->預處理器-> Prerpocessor deffinitios
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.