目前我正在尝试使用 C++ 制作一个 Windows 应用程序。为了编译我的程序,我使用 Mingw GCC。顺便说一句,我在 Windows 10 上。但是一旦我使用int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)而不是int main()编译器,就会显示以下消息:
C:/mingw-w64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/lib/.. /lib/libmingw32.a(lib64_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x2e):未定义对`WinMain' collect2.exe的引用:错误:ld返回1退出状态终端进程因退出而终止代码:1
我尝试编译的示例代码来自此 Windows 应用程序教程: 示例代码
我已经尝试重新安装 mingw 但它没有帮助。这就是为什么我希望这里有人可以帮助我解决我的问题。先感谢您!
TL;DR:如何使用 Cython 作为分发方法而不是 Py2exe、cx_freeze、pyinstaller 等。
继在用Cython制作一个可执行的,我想看看它怎么可能给一个Python程序分发到任何Windows用户(谁没有的Python已经安装了机上),通过用Cython第一编译它--embed。
让我们使用一个test.py:
import json
print(json.dumps({'key': 'hello world'}))
Run Code Online (Sandbox Code Playgroud)
并编译它:
cython test.py --embed
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
cl test.c /I C:\Python37\include /link C:\Python37\libs\python37.lib
Run Code Online (Sandbox Code Playgroud)
它可以工作并生成一个 140KB 的test.exe可执行文件。
test.exe在另一台机器上运行不能开箱即用,它需要:
即使这样,它仍然不起作用(下面的屏幕截图而不是复制/粘贴,因为我没有管理 VM 中的复制/粘贴 - 此处偏离主题):
ModuleNotFoundError:没有名为“编码”的模块
问题:分发--embed-Cython 编译的代码并使其在任何机器上运行(之前没有安装 Python)所需的最小文件集是什么?
我正在尝试使用 distutils 模块在 Linux for Windows (mingw32) 上交叉编译一个简单的 SWIG Python 扩展。
\n\n最终目标是为某些库编译 Python 包装器并能够在 Windows 上使用它。显然,我从最基本的示例开始,不幸的是它失败了。
\n\n这是我正在使用的文件:
\n\n示例.c
\n\n/* File : example.c */\n\n/* A global variable */\ndouble Foo = 3.0;\n\n/* Compute the greatest common divisor of positive integers */\nint gcd(int x, int y) {\n int g;\n g = y;\n while (x > 0) {\n g = x;\n x = y % x;\n y = g;\n }\n return g;\n}\nRun Code Online (Sandbox Code Playgroud)\n\nexample.i - SWIG 接口文件
\n\n/* File …Run Code Online (Sandbox Code Playgroud) 直观地:
.dll(动态链接)/ .lib(静态链接)。.so/ .abinary。我发现了什么:
.dlls和.as.so和静态链接到.a。.lib而关于SO的另一个问题则表明它不起作用。不幸的是,我在MinGW和MinGW-w64上找不到明确的文档来说明在动态/静态链接库时正确与错误的地方。
根据我的经验,我一直能够动态链接到.dll。一次,我能够静态链接到.lib(使用-static标志)。
题:
是.dll/ .a与MinGW的-W64 GCC工具链编译的二进制文件时拨出动,静链接库?换句话说,为MSVC生成的动态库和为GCC生成的静态库?
我正在尝试构建一个使用libcurl的Ruby C Extensions.到目前为止,我已经在Os X上成功构建了它.但是我在Windows开发方面经验不足,我不确定如何去做.
到目前为止,我可以通过遵循这些说明或多或少地使用Visual Studio命令提示符中的extconf.rb和nmake编译Ruby C Extensions
http://blogs.law.harvard.edu/hoanga/2006/12/14/getting-a-ruby-c-extension-to-compile-on-windows/
但是我的扩展链接libcurl,extconf.rb中有一行来检查这一点
# Make sure the cURL library is installed.
have_library("curl")
Run Code Online (Sandbox Code Playgroud)
在创建makefile时,我明白了
checking for main() in curl.lib... no
creating Makefile
Run Code Online (Sandbox Code Playgroud)
当我运行nmake时,我明白了
fatal error C1083: Cannot open include file: 'curl/curl.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是所有预期的,因为它没有安装.我已经下载了curl-7.26.0-devel-mingw64(我认为这适用于Windows 7)
我只是想在Windows环境中弄清楚我应该放置/ bin或/ include以便我的编译器可以找到它们.