2017-11-11 19 views
1

외부 라이브러리에 연결하려고하는 일부 이상한 결과가 나타납니다. 나는 명령 줄에서 다음 실행하는 경우 :링크 및 컴파일 후 C 실행 오류

gcc fftwTest.c -I../extlib/fftw-3.3.5-dll32 -L../extlib/fftw-3.3.5-dll32 -lfftw3-3 -lm -o test 

TEST.EXE 컴파일,하지만 난 그것을 실행할 때 나는 libfftw3-3.dll로부터 없기 때문에 프로그램을 시작할 수 없다는 오류 메시지가 내 컴퓨터. 링커가 컴파일 할 때 발견 했음에도 불구하고.

대신 libfftw3-3.dll을 내 fftwTest.c 파일과 동일한 디렉토리에두고 -L로 컴파일하면 OK가 실행됩니다. 그래서 나는 이것이 내가 -L 명령에 뭔가 잘못되어 있음을 암시한다고 생각한다. 그러나 그것이 링크되고 컴파일됨에 따라 나는 무엇이 옳은지 알지 못한다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

0

link 명령에 아무런 문제가 없으며 링커가 경로를 지정했기 때문에 컴파일하는 동안 링커가 찾았지만 프로그램을 실행할 때 링커가 다른 이야기를 사용합니다 (링커는 DLL, 배포 컴퓨터의 다른 위치에있을 수 있음).

DLL은 시스템 경로 또는 실행 파일과 같은 디렉터리에 있어야합니다. 귀하의 경우에 당신은 할 수 : 배치 파일에서 실행을 시작하기 전에 set PATH=%PATH%;../extlib를 (또는에서 전체 절대 경로를 설정 : 한 .exe 디렉토리에

  • 복사 DLL은
  • 또는 추가 (당신은 자신이 발견) Windows 환경 변수 관리를 사용하는 시스템 경로)

패키지를 타사에 배포 할 때 DLL을 복사하면 더 많은 구성을 필요로하지 않으므로 DLL을 여러 번 사용하거나 업그레이드 할 때 많은 작은 프로그램에서 개발 기계의 최상의 솔루션은 한 곳에서 유지하는 것입니다 그것을 실행하기 위해 시스템 PATH를 설정하십시오 (절충점입니다)