2011-07-02 8 views
1

プラグインは、外部依存のDLLファイル内の関数を呼び出す必要があります。 私はチュートリアルに従って、次のことを行いましたが、まだ成功しませんでした。FirebreathでCMakeを使用してNPAPIプラグインプロジェクトに依存するDLLを追加する

  • プロジェクトルートにsample.dllファイルを貼り付けました。

  • 私は(プロジェクト\ plugintest \勝利\ projectDef.cmake)projectDef.cmakeに次の設定を追加しました:

    set (LIBRARY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sample.dll") 
    target_link_libraries(${PROJECT_NAME} debug "${LIBRARY_PATH}/debug/sample.dll") 
    target_link_libraries(${PROJECT_NAME} optimized "${SANDSTONE_DIR}/release/sample.dll") 
    
  • 私は 「firebreath \ prep2010.cmdプロジェクトを使用してソリューションファイルを生成した構築"

    • 生成されたfirebreathソリューションのプロジェクトプロパティ - >構成プロパティ - >リンカ - >入力 - >追加の依存関係には、dllの適切な絶対パスがあります。
  • 私はPluginTestAPI.cppに次を追加しました:

    include "sample.h" 
    

をビルドエラー:そのようなファイルやディレクトリはありません:

は開くことができないファイル "sample.h" が挙げられます。

dllファイルは、ヘッダーファイルとlibファイルのパッケージです。私は正常にJNAを使用してDLLに呼び出しを行うことができます。

私はJava開発者であり、C++プログラミングの経験は豊富です。私は何か根本的なものが欠けていると思う。

ありがとうございます!

答えて

3

ここで欠けていることを理解するために必要な主なことは、実際にはDLLにリンクしていないことです。代わりに、DLLと一緒に行く.libファイルにリンクすると、あなたのためにDLLがロードされます。依存するDLLをビルドしているところでは、.libファイルもあります。 target_link_librariesのリンク先として指定します。

次に、インクルードファイル "sample.h"を開くには、cmake include_directoriesコマンドを使用して、インクルードディレクトリにsample.hへのパスを追加する必要があります。

私は誤植と思われますが、sample.dllも2回指定しています。 LIBRARY_PATHで1回、次にtarget_link_librariesコールで1回です。 $ {CMAKE_CURRENT_SOURCE_DIR} /sample.dll/debug/sample.dllにリンクしようとするため、これはうまくいかないでしょう

Visual Studioのプロジェクトプロパティを開いても失敗するとあなたが使っているもの)、どのライブラリを見てそこにディレクトリがあるのか​​を調べる。それはしばしばあなたがcmakeが実際にやっていることを理解するのに役立ちます。

希望に役立ちます!

+0

ありがとうございました。それはうまくいった。 – Yeshvanthni

+0

excelent ...今すぐ答えとしてマークする] – taxilian

関連する問題