Python のカスタマイズされたディストリビューションと一緒にアプリを出荷しようとしています (モジュールと独自の拡張機能が追加されています)。
シンプルに保ち、潜在的な既存のインストールと競合するリスクを避けるために、.\DLLS*.* および .\Lib*.* ツリーを \Python32\ からサブディレクトリ .\MyApp の下のアプリと共に出荷するのが最善の方法であると考えました。 \パイソン\
3 つの Py* 関数のみを直接呼び出します: (コードは C++ Builder です...)
typedef void (__stdcall *PY_SETPYTHONHOME) (wchar_t *);
PY_SETPYTHONHOME Py_SetPythonHome;
typedef void (__stdcall *PY_INITIALIZE) ();
PY_INITIALIZE Py_Initialize;
typedef int (__stdcall *PYRUN_SIMPLESTRING) (const char *);
PYRUN_SIMPLESTRING PyRun_SimpleString;
HMODULE py_dll_hndle;
py_dll_hndle = ::LoadLibrary((ExtractFilePath(Application->ExeName) + "Python\\DLLS\\python3.dll").c_str());
ShowMessage(py_dll_hndle == NULL ? L"Bah" : L"Yay"); // Result: "Yay"
Py_SetPythonHome = (PY_SETPYTHONHOME) ::GetProcAddress(py_dll_hndle, "Py_SetPythonHome");
ShowMessage(Py_SetPythonHome == NULL ? L"Bah" : L"Yay"); // Result: "Yay"
Py_Initialize = (PY_INITIALIZE) ::GetProcAddress(py_dll_hndle, "Py_Initialize");
ShowMessage(Py_Initialize == NULL ? L"Bah" : L"Yay"); // Result: "Yay"
PyRun_SimpleString = (PYRUN_SIMPLESTRING) ::GetProcAddress(py_dll_hndle, "PyRun_SimpleString");
ShowMessage(GetLastError()); // Result: "127" (ERROR_PROC_NOT_FOUND)
ShowMessage(PyRun_SimpleString == NULL ? L"Bah" : L"Yay"); // Result: "Bah"
PyRun_SimpleString は存在しませんか? http://www.nirsoft.net/ DLL エクスポート ビューアーを使用して探しましたが、ありません。私は混乱しています... 'エルはどこですか?