diff --git a/punyverse/launcher.c b/punyverse/launcher.c index fc9ad3b..9446be1 100644 --- a/punyverse/launcher.c +++ b/punyverse/launcher.c @@ -1,3 +1,4 @@ +#include #include #include @@ -10,8 +11,12 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine int main() #endif { - int argc; - LPWSTR *argv = CommandLineToArgvW(GetCommandLineW(), &argc); + int argc = __argc; +#if PY_MAJOR_VERSION >= 3 + LPWSTR *argv = __wargv; +#else + char **argv = __argv; +#endif Py_SetProgramName(argv[0]); Py_Initialize(); diff --git a/setup.py b/setup.py index 0714f7b..fe77c90 100644 --- a/setup.py +++ b/setup.py @@ -56,6 +56,14 @@ if os.name == 'nt': build_temp, target_lang ) + def make_manifest_get_embed_info(old_func): + def manifest_get_embed_info(self, target_desc, ld_args): + temp_manifest, mfid = old_func(target_desc, ld_args) + if not os.path.exists(temp_manifest): + return None + return temp_manifest, mfid + return manifest_get_embed_info.__get__(old_func.__self__) + class build_ext_exe(build_ext, object): def get_ext_filename(self, fullname): @@ -73,8 +81,11 @@ if os.name == 'nt': if isinstance(ext, SimpleExecutable): old = self.shlib_compiler.link_shared_object self.shlib_compiler.link_shared_object = link_shared_object.__get__(self.shlib_compiler) + self.shlib_compiler.manifest_get_embed_info = \ + make_manifest_get_embed_info(self.shlib_compiler.manifest_get_embed_info) super(build_ext_exe, self).build_extension(ext) self.shlib_compiler.link_shared_object = old + del self.shlib_compiler.manifest_get_embed_info else: super(build_ext_exe, self).build_extension(ext)