Ошибка компоновщика: множественное определение функции - PullRequest
0 голосов
/ 03 ноября 2019

Я застрял с ошибкой компоновщика:

    movecursor.cpp:(.text+0x0): multiple definition of 'random()'
    beep.cpp:(.text+0x0): first defined here
    [Error] ld returned 1 exit status

Что происходит?

main.cpp:

    #include "beep.h"
    #include "movecursor.h"

beep.h:

    #include <Windows.h>
    #include <mmsystem.h>

    DWORD WINAPI BeepSec(LPVOID parameters);

beep.cpp:

    #include "beep.h"
    #include "random.h"

    DWORD WINAPI BeepSec(LPVOID parameters)
    {
        code... :)
    }

movecursor.h:

    #include <Windows.h>
    #include "beep.h"

    DWORD WINAPI MoveCursor(LPVOID parameters);

movecursor.cpp:

    #include "movecursor.h"
    #include "random.h"

    DWORD WINAPI MoveCursor(LPVOID parameters)
    {
        also some code...
    }

random.h:

    #include <Windows.h>

    int random() {
            "Alright, let me show you this."
        HCRYPTPROV prov;
        if (prov == NULL)
            if (!CryptAcquireContext(&prov, NULL, NULL, PROV_RSA_FULL, CRYPT_SILENT | CRYPT_VERIFYCONTEXT))
        ExitProcess(1);

        int out;
        CryptGenRandom(prov, sizeof(out), (BYTE *)(&out));
        return out & 0x7fffffff;
    }

НО СЕЙЧАС ... КАК ЭТО РЕШИТЬ?

Я попытался поместить определение в random.cpp, а объявление в random.h, чтобы объявить random в обоих из movecursor.cpp и beep.cpp, но все равно не работает.

КАК ЭТО РЕШИТЬ?

1 Ответ

1 голос
/ 03 ноября 2019

Поместите определение random () в исходный файл .cpp.

Используйте заголовочные файлы в заголовочных файлах .h:

#ifndef RANDOM_H
#define RANDOM_H
extern int random();
...
...
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...