当我尝试编译
时$ gcc -lcurl try.cpp
/tmp/ccJs0k9m.o: In function `main':
try.cpp:(.text+0x2d): undefined reference to `getURL::fetch(char*, char*)'
collect2: ld returned 1 exit status
该方法出现在标题和类主体中。究竟有什么问题?
try.cpp
#include <curl/curl.h>
#include <curl/easy.h>
#include "getURL.h"
int main(void) {
getURL my_getURL;
my_getURL.fetch("http://stackoverflow.com/", "file");
}
getURL.h
#ifndef _getURL
#define _getURL
class getURL {
public:
void fetch(char *url, char *filename);
};
#endif
getURL.cpp
#include <curl/curl.h>
#include <curl/easy.h>
#include <stdio.h>
class getURL {
private CURL *curl;
public getURL() {
//code
}
public void fetch(char *url, char *filename) {
//code
}
private size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
//code
}
public ~getURL() {
//code
}
} //end class
答案 0 :(得分:3)
您没有使用正确的实现语法;它
getURL::getURL() {
//code
}
void getURL::fetch(char *url, char *filename) {
//code
}
size_t getURL::write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
//code
}
getURL::~getURL() {
//code
}
请注意,您不得在实现中重复class
部分(只需包含标题)。另请注意,您不允许在实现中具有在声明中不可见的私有成员...这很不幸,但它是如何定义语言的。
答案 1 :(得分:0)
您只是编译了一个源文件。
变化:
gcc -lcurl try.cpp
为:
gcc -lcurl try.cpp getURL.cpp