2017-10-11 5 views
1

python27.dll을 사용하여 CLI에서 .py 스크립트를 실행할 수 있습니까? 나는 이것을 시도했다 :python27.dll을 사용하여 python 스크립트 실행

rundll32.exe python27.dll,PyRun_SimpleString "import myScript.py" 

그러나 보이지 않는 것처럼 보인다.

상황에 따라 원하는 모든 파이썬 모듈을 설치할 수 있지만 실행 파일이 없으므로 전체 Python을 설치할 수 없습니다.

+0

당신은 실행 파일로 변환 할 수 있습니다 실행을위한 전체 파이썬 설치 프로그램을 설치할 필요가 없습니다. 당신이 .exe 형식으로 윈도우 변환을 사용하는 경우. 동영상 확인 ==> https://www.youtube.com/watch?v=vPzc4OelblQ – rohitjoshi9023

답변

1

이 작업을 수행 할 수 없습니다. 왜? MSDN에 따르면,

RUNDLL.EXE <dllname>,<entrypoint> <optional arguments> 

:하지만

Windows는 다음과 같은 구문을 사용하여 32 비트 DLL에서 내 보낸 함수를 호출 할 수 rundll32.exe라는 명령 줄 유틸리티 프로그램이 포함되어

Rundll32는 프로그램을 통해 임의의 DLL에서 내 보낸 함수를 호출하는 것을 허용하지 않습니다

[..]

,

프로그램은 DLL에서 명시 적으로 호출하도록 작성된 함수 만 호출 할 수 있습니다.

dll

그것을 지원하기 위해 다음과 같은 프로토 타입을 내 보내야합니다 : python.dll 이후

void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst, 
         LPSTR lpszCmdLine, int nCmdShow); 

은 진입 점을 내 보내지 않습니다, 당신은 DLL을로드 C/C++에서 래퍼 응용 프로그램을 작성해야 그리고 (여기에서 이러한 애플리케이션으로부터 단편이다) 예를 들면, 그것을 사용

// load the Python DLL 
#ifdef _DEBUG 
LPCWSTR pDllName = L"python27_d.dll" ; 
#else 
LPCWSTR pDllName = L"python27.dll" ; 
#endif 

HMODULE hModule = LoadLibrary(pDllName) ; 
assert(hModule != NULL) ; 

// locate the Py_InitializeEx() function 
FARPROC pInitializeExFn = GetProcAddress(hModule , "Py_InitializeEx") ; 
assert(pInitializeExFn != NULL) ; 

// call Py_InitializeEx() 
typedef void (*PINITIALIZEEXFN)(int) ; 
((PINITIALIZEEXFN)pInitializeExFn)(0) ; 

FILE* fp ; 
errno_t rc = fopen_s(&fp , pFilename , "r") ; 
assert(rc == 0 && fp != NULL) ; 

[..] // go on to load PyRun_SimpleFile 
if (0 == PyRun_SimpleFile(fp , pFilename) 
    printf("Successfully executed script %s!\n", pFilename); 

원산지 : Awasu.com first 및자습서

+0

<< rundll32.exe를 사용하여 .dll 파일을로드 할 수 없습니다. >> >> : 나는 그렇게 생각하지 않습니다. rundll32.exe가 완료되었습니다. 그 목적을 위해, 나는 생각한다. –

+0

@ luca.vercelli, 내 설명이 충분히 명확하지 않은 것을 알았 기 때문에 나는 정교하게 설명했다. –