English 中文(简体)
错误:在Algorithms.obj中已经定义(功能Name)。
原标题:Error: (functionName) already defined in Algorithms.obj
1>GameWinMain.obj : error LNK2005: "bool __cdecl BPredicate(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?BPredicate@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) already defined in Algorithms.obj
1>C:Algorithms.exe : fatal error LNK1169: one or more multiply defined symbols found

I m getting the latter when trying to declare a function in the header. I m not sure what s causing this, everything has include guards. Funny thing is: if I define the function in the header as inline, it compiles. Can anyone help?

见以下法典:

<>Algorithms.h>>

#pragma once

//...other code

bool BPredicate(const string& a, const string& b){
    string::const_iterator it;
    UINT numA = 0;
    UINT numB = 0;
    for (it = a.begin(); it != a.end(); ++it) {
        if((*it) ==    ) {
            if (*(it-1) !=    ) {
                ++numA;
            }
        }
    }
    for (it = b.begin(); it != b.end(); ++it) {
        if((*it) ==    ) {
            if (*(it-1) !=    ) {
                ++numB;
            }
        }
    }

    return (numA < numB);
}

<>GameWinMain.h

#pragma once

#define WIN32_LEAN_AND_MEAN
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow);

<><><>GameWinMain.cpp>

#include "GameWinMain.h"
#include "GameEngine.h"
#include "Algorithms.h" 

#define GAME_ENGINE (GameEngine::GetSingleton())

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    if (GAME_ENGINE == NULL) return FALSE; 

    GAME_ENGINE->SetGame(new Algorithms()); 

    return GAME_ENGINE->Run(hInstance, iCmdShow); 
}
最佳回答

你不能像这样界定领导者的职能。 标识为staticinline 或将在包括负责人的所有来源档案中加以界定。

如果你想从几个来源档案中利用这一职能,则只用declare<>。

bool BPredicate(const string& a, const string& b);

(Note the semicolon and no function body.)

然后在您的档案中界定这一职能。

问题回答

暂无回答




相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?