2016-12-29 20 views
-1

VLFeatソースコード、特にのファイルをthisに変更しようとしています。このようなライブラリのソースコードを編集するのは初めてですから、Hello Worldを印刷するような簡単な作業から始めました!printf()はソースコードでは動作しませんか?

this文書の慣習以下)すると
void 
vl_vlad_encode (void * enc, vl_type dataType, 
       void const * means, vl_size dimension, vl_size numClusters, 
       void const * data, vl_size numData, 
       void const * assignments, 
       int flags) 
{ 
    printf("Hello World!"); 
... 

:fucntionの先頭に

  1. 私はエラーなしで(VLFEATROOTmakeとライブラリを再コンパイルrm -rf VLFEATROOT/bin
  2. とのバイナリコードを削除しました)

ただし、私のアプリケーションからvl_vlad_codeを呼び出すと、pはありません。 rinted。 私のC++アプリケーションでライブラリが正常に動作することに気づいただけで、変更が無視されます。

ただ、完全を期すために、私はUbuntuの16.04を使用し、これは私が私のEclipse CDTプロジェクトで使用VLFeatに関するコンパイルオプションは次のとおりです。

... -I/home/luca/vlfeat ... -L/home/luca/vlfeat/bin/glnxa64 ... -lvl

UPDATE:コメント欄で 次の提案、Iこの方法でファイルに何かを書き込もうとしました:

void 
vl_vlad_encode (void * enc, vl_type dataType, 
       void const * means, vl_size dimension, vl_size numClusters, 
       void const * data, vl_size numData, 
       void const * assignments, 
       int flags) 
{ 
    FILE *f = fopen("/home/luca/file.txt", "w"); 
    if (f == NULL) 
    { 
     printf("Error opening file!\n"); 
     exit(1); 
    } 
/* print some text */ 
const char *text = "Write this to the file"; 
fprintf(f, "Some text: %s\n", text); 

ファイルが作成されていません!

+3

盲目的な提案: 'printf(" Hello World! ");' printf( "Hello World!\ n"); ' –

+0

ええ、私はすでにそれを試みました(実際には最初のバージョンでした)。あなたはどこに電話していますか? – justHelloWorld

+1

また、ライブラリを再コンパイルするだけでなく、アプリケーションを再コンパイル/再リンクすることもできます。 – UnholySheep

答えて

2

アプリケーションを実行すると、システム全体でインストールされているライブラリと実際にリンクしている可能性があります。テストとして、ライブラリをビルドしたディレクトリを環境変数LD_LIBRARY_PATHに追加して、プログラムを実行してみてください。あなたはIDEを使用している場合は、その環境設定の中に変数を設定する必要があり

export LD_LIBRARY_PATH=/path/to/your/lib:${LD_LIBRARY_PATH} 

:あなたが行うことができ、コマンドラインから

この変数のパスは、システムライブラリを検索する前に検索されます。あなたはいつもあなたの実行ファイルがリンクされたライブラリが実行して配置されてする場所を正確に知ることができ

ldd /path/to/your/executable 
1

問題が/usr/loca/liblibvl.soのコピーでした。削除後、問題は解決され、メッセージは正しく印刷されます。

+0

それで、私は可能性として提供したようなシステムライブラリにリンクしていました。 – diametralpitch

+0

そのファイルを手動で削除すると、他のプログラムが依存していると、そのファイルが破損する可能性があります。 – diametralpitch

関連する問題