2

新しいプロジェクトのコンパイルに問題があります。

コンパイラ出力:

1>------ Build started: Project: IRPCore, Configuration: Debug Win32 ------
1>  core.cpp
1>     Creating library D:\Repo\Inter Role Play Gamemode\sa-mp-0.2-plugin-sdk\IRP\Debug\IRPCore.lib and object D:\Repo\Inter Role Play Gamemode\sa-mp-0.2-plugin-sdk\IRP\Debug\IRPCore.exp
1>core.obj : error LNK2001: unresolved external symbol "public: static class std::tr1::unordered_map<int,struct item,class std::hash<int>,struct std::equal_to<int>,class std::allocator<struct std::pair<int const ,struct item> > > core::itemCache" (?itemCache@core@@2V?$unordered_map@HUitem@@V?$hash@H@std@@U?$equal_to@H@3@V?$allocator@U?$pair@$$CBHUitem@@@std@@@3@@tr1@std@@A)
1>main.obj : error LNK2001: unresolved external symbol "public: static class std::tr1::unordered_map<int,struct item,class std::hash<int>,struct std::equal_to<int>,class std::allocator<struct std::pair<int const ,struct item> > > core::itemCache" (?itemCache@core@@2V?$unordered_map@HUitem@@V?$hash@H@std@@U?$equal_to@H@3@V?$allocator@U?$pair@$$CBHUitem@@@std@@@3@@tr1@std@@A)
1>D:\Repo\Inter Role Play Gamemode\sa-mp-0.2-plugin-sdk\IRP\Debug\IRPCore.dll : fatal error LNK1120: 1 unresolved externals

ここにcore.cppが来ます

#include <iostream>
#include <unordered_map>
#include "core.h"

core::core(void)
{

}

core::~core(void)
{

}

void core::Item_Insert(int uid, item Item)
{
    core::itemCache.insert(std::make_pair<int,item>(uid, Item));

    return;
}

std::string core::convertNativeStringToString(AMX *amx, cell input)
{
    char *string = NULL;
    amx_StrParam(amx, input, string);
    return string ? string : "";
} 

さらにいくつかのライブラリをリンクする必要がありますか?

前もって感謝します。

編集: core.hからのコア定義がここにあります

class core
{
    public:
        static std::unordered_map<int, item> itemCache;
        core(void);
        ~core(void);
        static void Item_Insert(int uid, item Item);
        static std::string convertNativeStringToString(AMX *amx, cell input);
    private:
};
4

2 に答える 2

6

core::itemCachecore.cppにの定義を追加します。一般に、クラスの静的データメンバーは、クラス定義で宣言され、ソースファイルで定義されます。

于 2012-09-19T22:08:33.990 に答える
5

@Pete Beckerが言っているように、これをcppの一番上に置きます:

std::unordered_map<int, item> core::itemCache;

に加えて

static std::unordered_map<int, item> itemCache;

すでに.hにあります。

于 2015-03-09T01:38:30.903 に答える