私は2つのファイルgrabURL.cppとgrabURL.hppを持っています。 gccで両方をコンパイルすると、複数の定義エラーが発生します。Cで多重定義エラー
grabURL.cpp
#include "grabURL.hpp"
size_t buffer(void *ptr, size_t size, size_t nmemb, void *stream) {
int numbytes = size*nmemb;
char lastchar = *((char *) ptr + numbytes - 1);
*((char *) ptr + numbytes - 1) = '\0';
ret.append((char *)ptr);
ret.append(1,lastchar);
*((char *) ptr + numbytes - 1) = lastchar;
return size*nmemb;
}
void grabURL(std::string url, std::string *theRet){
curl_easy_setopt(curl,CURLOPT_URL,url.c_str());
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION, buffer);
res = curl_easy_perform(curl);
*theRet = ret;
}
grabURL.hpp:
#ifndef CURLURLGRAB_HPP
#define CURLURLGRAB_HPP
#include <string>
#include <curl/curl.h>
CURL * curl;
CURLcode res;
std::string ret;
size_t buffer(void *ptr, size_t size, size_t nmemb, void *stream);
void grabURL(std::string url,std::string* theRet);
#endif
私は私が間違っているの何見当がつかない、私は私が正しくIFNDEFことをしたと思いました。正確に何が間違っていますか?あなたのヘッダファイル内
* exact *エラーメッセージとは何ですか? –
g ++ main.cpp grabURL.cpp -o test -lcurl /tmp/cceVAPGI.o:(bss+0x0): 'curl 'の複数定義 /tmp/ccC6uR4k.o:(.bss+0x0):最初にここで定義されている /tmp/cceVAPGI.o:(.bss+0x8): 'res 'の多重定義 /tmp/ccC6uR4k.o:(.bss+0x8):最初にここに定義されています /tmp/cceVAPGI.o :(.bss + 0x10): 'ret 'の多重定義 /tmp/ccC6uR4k.o:(.bss+0x10):ここで最初に定義されました – Thundaboom