2017-12-11 3 views
0

을 사용하여 *.c 개의 파일을 생성하고 나중에 MS Visual Studio 2017을 C/C++으로 컴파일합니다. 그것은 모든 파이썬 *.lib이 동적으로 연결되어 있다는 사소한 예외를 제외하고는 모두 훌륭하게 작동합니다. 내 목표는 자체 포함 된 exe (큰 exe 크기가 문제가되지 않습니다) 제작하는 것입니다, 모든 파이썬 *.lib 정적 연결하는 것이 가능한지 물어보고 싶습니다. 이미 \MT 릴리즈 옵션을 지정하고 디버거에 모든 파이썬 라이브러리를 정의하려고했습니다.UCRT에서 Python 확장의 종속성을 제거하는 방법

동적으로 링크 된 실행 파일이 다른 컴퓨터에 복사 할 때 python3.dll을 찾을 수 없기 때문에 불행히도 내 모든 노력은 쓸데 없었습니다. 현재 전체 python 설치 디렉토리를 실행 파일과 함께 복사하고 컴파일 할 때 적절한 include 링크를 지정할 계획입니다.

따라서 필자는 자체 탑재 휴대용 실행 파일을 생성하는 모든 옵션에 관심이 있습니다.

귀하의 도움과 조언에 감사드립니다.

+1

제 생각에는 실례지만 C++ 언어와 어떻게 관련되어 있습니까? 당신은 C 파일에 대해서 이야기하지만, C는 다른 언어입니다. 우리가 볼 수있는 C++ 코드는 어디에 있습니까? –

+0

@ThomasMatthews 죄송합니다. VS에서 C++ 프로젝트로 컴파일합니다. –

+0

나는 당신이하려는 것을 알고있다. 그것은 당신이 생각하는 것보다 훨씬 더 까다로울 것입니다. – xaav

답변

1

xaav가 정확합니다.

대신 나는 당신에게 올바른 길로 인도 할 수있는 희망으로 해결책으로 이것을 게시 할 것입니다.

이유 때문에 Cython이 존재합니다. 파이썬 코드를 얻고 몇 가지 변경 사항을 추가하고 빵을 작성하면 코드가 cythonised됩니다.

이것은 두 가지 이유로 좋습니다. 코드를 난독 처리하고 코드 속도를 높일 수 있습니다 (의존).

왜 cython과 pyinstaller를 사용하지 않습니까? 이것은 시험되고 테스트되었습니다. Pyinstaller는 심지어 지원한다고 말합니다. 당신이 취하는 접근 방식은 이론적으로 할 수 있지만 너무 복잡하고 필요조차되지 않습니다.

우려 사항 :

하지만 내 소스 코드를 훔칠 수는 없나요? 아니요, 그렇습니다. 그렇지만 쉽지 않습니다.

Nuitka를 사용할 수 없습니까? 예, 버그가 있고 의도 한대로 작동하지 않으려면 필요합니다.

라이브러리는 다른 PC에서는 작동하지 않습니까? 스펙 파일은 이유 때문에 존재합니다. 약간의 수동 조작이 가능합니다.

C++로 컴파일 한 다음 독립형으로 만들 수 없습니까? 답이없는 질문의 숫자와 그것이 작동하지 못하는 사람들을보십시오. 또한 pyinstaller와 cython이 존재할 때도 필요하지 않으며 같은 일을합니다. Cython은 널리 지원됩니다. 당신이 길고 힘든 일을하고있는 것처럼 느껴집니다.

하지만 C++로 컴파일하기가 쉽지 않습니다. pyinstaller는 이미 대부분의 다리 작업을 수행합니다. 여기저기서 스펙 파일을 조정해야 할 수도 있지만 그렇지 않은 경우에는 갈 수있는 유일한 방법입니다. 그것은 또한 pyupdater와 통합되어 있다는 것을 명심하십시오.

+0

cython 잘 작동합니다. 문제는 실행 파일을 다른 PC에 복사 할 수 없다는 것입니다. pyinstaller도 비슷한 문제가 있으며, 일부 Windows 라이브러리를 바인드하고 새 PC에서이 라이브러리가 발견되지 않으면 바이너리가 실패합니다. –

관련 문제