2017-09-12 5 views
0

특정 조작을 수행하기 위해 사용자 정의 된 NSIS 플러그인이 있습니다. 이 NSIS 스크립트에서, 나는 다음과 같은 명령을 통해 플러그인을로드 한 :NSIS 스크립트에서 사용자 정의 플러그인을로드 할 수 없습니다.

!addplugindir "Plugin\" 

(이 NSIS 스크립트가 존재하는 동일한 폴더에있는 ExDll.dll라는 이름의 DLL "플러그인"라는 폴더가 있습니다가 존재)

나는 다음과 같은 명령을 통해 DLL의 기능을 수행하고있다 :

ExDll::Func123 "<param1>" "<param2>" 

은 컴파일 후, 실행이 제대로 문제없이 실행됩니다. : ("nsw19B5.tmp \ \ 사용자 \ user123 \의 AppData \ 로컬 \ 온도 C")는

Could not load: C:\Users\user123\AppData\Local\Temp\nsw19B5.tmp\ExDll.dll 

내가 위의 디렉토리를 선택 : 나는 다른 시스템에 동일한 실행 파일 이동할 때, 나는 다음과 같은 오류가 발생합니다 DLL " ExDll.dll"이 나타납니다.

그래서, 다음 한 질의 :

  1. 은 무엇이 뒤에 가능한 이유가 될 수 있는가?
  2. 이 문제는 어떻게 해결해야합니까?

답변

0

일부 종속성이 누락되었습니다. 문제가있는 시스템에서 .DLL을 Dependency Walker으로 검사하십시오. 대부분 MSVCRT 파일 중 하나에 직접 연결되어 있고 VC C++ 런타임 파일이 해당 시스템에 설치되어 있지 않은 것으로 나타납니다.

don't need the CRT (/Zl) 또는 정적 연결 (/MT)으로 코드를 변경할 수 있습니다.