是否可以使用python27.dll从CLI运行.py脚本? 我试过这个:使用python27.dll运行python脚本
rundll32.exe python27.dll,PyRun_SimpleString "import myScript.py"
但似乎不工作。
情况是,我可以安装所需的所有python模块,但没有可执行文件,所以我无法安装完整的Python。
是否可以使用python27.dll从CLI运行.py脚本? 我试过这个:使用python27.dll运行python脚本
rundll32.exe python27.dll,PyRun_SimpleString "import myScript.py"
但似乎不工作。
情况是,我可以安装所需的所有python模块,但没有可执行文件,所以我无法安装完整的Python。
你不能这样做。为什么?
的Windows包含一个名为rundll32.exe
,使您可以调用使用以下语法从32位DLL导出的函数命令行实用程序:
RUNDLL.EXE <dllname>,<entrypoint> <optional arguments>
但是,根据MSDN:
Rundll32的程序不允许你从任何DLL调用任何导出函数
[..]
这些程序只允许你从一个DLL中调用函数,这些函数被明确写入以便被它们调用。
的dll
必须导出以下原型来支持它:
void CALLBACK EntryPoint(HWND hwnd, HINSTANCE hinst,
LPSTR lpszCmdLine, int nCmdShow);
由于python.dll
不导出这样的入口点,你必须写在加载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和10教程
<<一个.dll文件无法使用rundll32.exe加载>>:我不这么认为,rundll32.exe完成了为此,我想。 –
@ luca.vercelli,我现在看到我的解释不够清楚,所以我阐述了 –
你可以转换成可执行文件,那么你不需要安装完整的python设置执行。如果你使用窗口转换成.exe格式。检查视频==> https://www.youtube.com/watch?v=vPzc4OelblQ – rohitjoshi9023