2016-03-19 14 views
0

現在、Eclipseでプロジェクトを構築しようとしています。プロジェクト・エクスプローラを以下に示す:cabbie.c定義済みの関数への未定義参照

enter image description here

私はエラーを取得し、undefined reference to initialize...、以下のコードで:

#include <stdio.h> 
#include <stdlib.h> 
#include "../iotfclient.h" 

Iotfclient client; 
int rc; 

int main() { 
    /* Setup your example here, code that should run once 
    */ 

    rc = initialize(&client, "h7dzt2", "Edison_cabquam", "notwindows95", "token", "Over_9000"); 

    /* Code in this loop will run repeatedly 
    */ 
    for (;;) { 

    } 

    return 0; 
} 

機能が既にiotfclient.hに定義されているヘッダーとして含まれていましたファイル。 ../iotfclient.hと定義するのは正しいですか?私はMakefileを作るはずですか?このプロジェクトは、bluemix IOTプラットフォームに接続しようとする

int initialize(Iotfclient *client, char *orgId, char *deviceType, char *deviceId, char *authmethod, char *authtoken); 
/** 
* Function used to initialize the IBM Watson IoT client using the config file which is generated when you register your device 
* @param client - Reference to the Iotfclient 
* @param configFilePath - File path to the configuration file 
* 
* @return int return code 
* error codes 
* CONFIG_FILE_ERROR -3 - Config file not present or not in right format 
*/ 

iotfclient.h内の関数のプロトタイプは以下の通りです。

+0

これは** iotfclient.hで**宣言されていますが、どこに定義されていますか**? –

+0

cabbie.cの#include行について警告を受けますか? – ItayB

+1

@ItayB私はそれがちょうど '#include" iotfclient.h "だったときに使いました。それから '' ../iotfclient.h ''に変更しました。 –

答えて

1

initialize()であり、iotfclient.hであると宣言されている。ただし、と定義する必要はありません。言い換えれば、コンパイラは識別子initialiseが関数を表していることを知っていますが、プログラムを作成するには、関数がどのように機能するか、つまり関数本体を追加する必要もあります。

../iotfclient.cを含むようにしてください。

+0

* .cファイルを#includeしないでください。代わりにプロジェクトのレイアウトを修正してください。 – user3629249

+0

@ user3629249そうです、* .cファイルは含まれていません。関連する関数定義をioftclient.cからcabbie.cにコピーするのが良い方法でしょうか? –

0

機能initialize../iotfclient.hで宣言あり、それは../iotfclient.cを定義できますが、あなたはこのファイルをコンパイルして、プロジェクトにリンクしていますか?

+0

どうすればいいですか? –

+0

答えに追加してください。 –

+0

@SharanDuggirala:Eclipseユーザーではないので、このIDEが* project *の概念を実装するためにどのような魔法を実行するのか分かりません。どのようにプログラムを構築していますか? Makefileは、もしあなたが作成して*プロジェクト*に組み込む方法を知っていれば確かに役に立ちます。 – chqrlie

関連する問題