わかりました、これは重複しているように見えるかもしれませんが、検索された投稿を介してほとんどのバリエーションと試行を試みましたが、まだ何も思いつきません. 問題は次のとおりです。.xlsファイルの読み取りに使用されるlibxlsというオープンソースのCライブラリを使用しています(適切な名前のプロジェクト.. :))。私が使用しているコードは、彼らのウェブサイトから直接引用したもので、基本的には、ライブラリにアクセスできることを確認するための最初のおもちゃの例にすぎません:ソースを含むウェブサイトへのリンク
#include <stdio.h>
#include "libxls/xls.h"
int main(){
xlsWorkBook* pWB;
pWB = xls_open("Book1.xls", "iso-8859-15//TRANSLIT");
return 0;
}
それでおしまい。さて、その構文は問題ありません。xls_open が .a ライブラリの関数として実際に利用可能であることを nm コマンドで知っているので、それは問題ではありません。私のディレクトリには次のファイルがあります(冗長な命名を許してください、私はそれを本当に速く動作させようとしていただけです):
Book1.xls
libxlsreader.a
libxlsReader.c
libxlsreader.so
.so ファイルが存在する場所に動的にリンクしようとしたので、ここに .so ファイルが必要だとは思いませんが、試すのは悪い計画ではないと考えました。よし、インクルード行で、共通のものを取得し続けます。
libxlsreader.c:3:37: fatal erro: libxls/xls.h: No such file or directory
わかりました。ライブラリに間違ってリンクした可能性があります。コンパイル行の引数を見てください。
gcc -o libxlsWrapper libxlsReader.c -L /usr/local/lib/ -lxlsreader -lpthread
うーん、そうですね..それは確かに正しいように見えます./usr/local/lib/は、ライブラリがすべての.soファイルと私のPWDの.aファイルでそれ自体を作成した場所です。現在、私は本業の Java 開発者であるため、明らかに明らかな何かを見落としている可能性がありますが、私の人生では、それが何であるかを判断することはできません。それは確かに私には大丈夫です。
Linux Mint 15 KDE 32 ビットで GCC (ubuntu/Linaro 4.7.3-lubunutul) 4.7.3 を使用しています。
独自のテストや問題解決のためにライブラリを再現したい場合は、次の場所から入手できます。
Windowsで再作成することはお勧めしません。昨日数時間試してあきらめたので、通常の ./configure -> make -> make install を実行するだけで、適切なライブラリが生成されます。
ありがとう!
-意思
編集#1:これは私が試した他のリンクの試みのいくつかで、すべて同じ結果です。
gcc -o libxlsWrapper libxlsReader.c -L. -lxlsreader -I.
gcc -o libxlsWrapper libxlsReader.c -L. -lxlsreader -lpthread
gcc -o libxlsWrapper libxlsReader.c -L. -lxlsreader.so
また、gcc の代わりに g++ を使ってたくさん試してみました (ダーツを投げる、私は知っています)、同じ結果です。