Использование заголовков C в C ++

Я поискал это в гуглах и обнаружил, что вы используете

extern "C" {
#include "header.h"
}

Чтобы включить библиотеку C в библиотеку C ++ ... однако, когда я это делаю. Программа на C ++, кажется, улавливает все мои #defines и определения структур, но ни одно из объявлений функций не оставляет мне неопределенной ссылки на `function '.

Вот минимальное количество src, которое я использую.

json.h

//json.h
typedef struct json_object json_object;
struct json_object {
    char key[15][50];
    int size;
    char value[15][50];
};
void json_parseText(char * text, struct json_object *jo);

test.cpp

//test.cpp
extern "C" {
    #include "json.h"
}

int main() {
    struct json_object jo;
    char * keyVal;
    char * text = "{ \"MsgType\": \"article\" }";

    json_parseText(text, &jo);
}

g ++ дает следующее:

test.cpp:(.text+0x2c): undefined reference to `json_parseText'

обратите внимание, что он не жалуется на определение структуры, поэтому кажется, что он получил это из файла заголовка. Но не функция. Это меня сбивает с толку. Я никогда раньше не использовал C ++, но для моей среды тестирования он должен быть на C ++. Дайте мне знать, если у вас есть какие-либо мысли о том, как это исправить. Спасибо.

6
задан hammar 21 August 2011 в 23:15
поделиться