0

コンパイルしようとすると

$ 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
4

2 に答える 2

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実装でこの部分を繰り返さないでください(代わりにヘッダーを含めるだけです)。また、宣言に表示されないプライベートメンバーを実装に含めることは許可されていないことに注意してください...これは残念ですが、言語の定義方法です。

于 2012-09-01T17:25:42.517 に答える
0

ソース ファイルの 1 つだけをコンパイルしています。

変化する:

gcc -lcurl try.cpp

に:

gcc -lcurl try.cpp getURL.cpp
于 2012-09-01T18:09:21.547 に答える