2012-03-08 12 views
0

私は、1つのOracleデータベースとLDAPからのデータをチェックするための小さなツールを作成しています。 パフォーマンスを考える私はC/C++を使うことに決めました。したがって、open ldapライブラリとoracle occiライブラリを使用しています。今、各ライブラリのラッパーをまとめると、プログラムをOracleライブラリにリンクすると、ldapライブラリの関数が失敗することに気付きました。 Openldapライブラリで定義されているのと同じ名前の関数がOracleライブラリに定義されています。 私はこの問題についてウェブで多くを見つけられませんでした。最初にldapライブラリとリンクすることをアドバイスしていますが、それはしません。init()では失敗しませんが、connect() 。OpenLDAPのlibldapとOracleのocciライブラリの間の競合

私はLinux(Ubuntu)で開発しています。私が使用するライブラリはすべてCです。 誰もこれについてアドバイスしていますか?この問題を抱えている他の人がいるはずです。

どのような考えでも大歓迎です。 多くのありがとう

答えて

0

これらの機能がAPIエントリポイントでない限り、共有ライブラリとして両方にリンクして機能させることができるはずです。次に、各ライブラリは独自のバージョンの関数を使用します。あなたがそれを自分で呼び出さない限り、どちらのバージョンも表示されません。

関連する機能がAPIエントリポイント、つまりLDAP APIである場合、かなり奇妙なことが起こっています。

+0

私は共有ライブラリとしてldapライブラリをビルドしました。私は両方とも共有ライブラリとしてリンクしています。これは、oracleのlibclntshとリンクしているときに起こっています。以下を参照してください。 'objdump -T libclntsh.so | grep "ldap_sasl_bind_s" 00fec288 g DF text.unlikely \t 0000004c Base ldap_sasl_bind_s' – seven

+0

@sevenこれは、Oracleライブラリには必要なものがすべて含まれているようです。ちょうどそれを使ってみてください。 – EJP

0

リンクステージで "-lldap -llber"を指定すると、この問題を解決できます。

リンク段階の最後にoracle librayを指定していることを確認してください。 ldapはliblberに依存します。

関連する問題