2011-07-02 3 views
1

플러그인은 외부 종속 dll 파일에서 함수를 호출해야합니다. 나는이 튜토리얼을 따르고 다음과 같이했지만 여전히 성공하지 못했다.Firebreath에서 CMake를 사용하여 NPAPI 플러그인 프로젝트에 종속 DLL 추가

  • 내 프로젝트 루트에 sample.dll 파일을 붙여 넣었습니다.

  • 나는 projectDef.cmake에 다음과 같은 구성을 추가 한 (프로젝트 \ plugintest \ WIN \ projectDef.cmake) : 나는 "firebreath \ prep2010.cmd 프로젝트 빌드를 사용하여 솔루션 파일을 생성

    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 솔루션의 프로젝트 속성 -> 구성 속성 -> 링커 -> 입력 -> 추가 종속성은 dll의 적절한 절대 경로를가집니다.

      include "sample.h" 
      

    오류 빌드 : 해당 파일이나 디렉토리 :

    가 열려 있지 "는 sample.h"파일을 포함 할 수 있습니다

  • 은 내가 PluginTestAPI.cpp에 다음을 추가했다.

    dll 파일은 헤더 파일과 lib 파일의 패키지입니다. 성공적으로 JNA를 사용하여 DLL을 호출 할 수 있습니다.

    저는 Java 개발자이며 C++ 프로그래밍 경험이 없습니다. 나는 근본적인 무언가를 놓치고 있다고 생각한다.

    감사합니다.

    답변

    3

    여기서 누락되었다는 사실을 이해해야 할 주요한 사항은 실제로 DLL에 연결하지 않는다는 것입니다. 대신, 당신은 DLL과 함께가는 .lib 파일에 링크하고 그 뒤에서 당신을 위해 DLL을로드 할 것입니다. 당신이 당신의 종속 DLL을 구축하고 있다면 어디서나 .lib 파일이 있다는 것을 알게 될 것이다. target_link_libraries에서 링크 대상으로 지정하십시오.

    다음으로 포함 파일 "sample.h"을 열려면 cmake include_directories 명령을 사용하여 include.h에 sample.h 경로를 추가해야합니다.

    필자는 오타라고 생각하지만 sample.dll을 두 번 지정했습니다. LIBRARY_PATH에서 한 번, target_link_libraries 호출에서 한 번. $ {CMAKE_CURRENT_SOURCE_DIR} /sample.dll/debug/sample.dll

    Visual Studio에서 프로젝트 속성을 열지 못하면 (그 이후로) 당신이 사용하고있는 것) 그리고 어떤 라이브러리를보고 거기에 디렉토리를 포함 시켜라. 그것은 종종 당신이 쉐이크가 실제로 무엇을하고 있는지를 이해하는데 도움이 될 것입니다.

    희망 하시겠습니까?

    +0

    감사합니다. 그게 효과가 있었어. – Yeshvanthni

    +0

    우수 ... 이제 답변으로 표시 =] – taxilian

    관련 문제