我陷入了这个链接器错误:
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"
哔哔声:
#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,
在movecursor.cpp和beep.cpp中都声明为random,但仍然无法正常工作。
如何解决这个问题?
最佳答案
将random()的定义放入.cpp源文件中。
在.h头文件中使用include防护:
#ifndef RANDOM_H
#define RANDOM_H
extern int random();
...
...
#endif