相关疑难解决方法(0)

对 WinMain (C++ Mingw) 的未定义引用

目前我正在尝试使用 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 但它没有帮助。这就是为什么我希望这里有人可以帮助我解决我的问题。先感谢您!

c++ winapi mingw winmain mingw32

11
推荐指数
2
解决办法
2万
查看次数

分发嵌入 Cython 编译的代码并使其在任何机器上工作所需的最少文件集

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)所需的最小文件集是什么?

python windows compilation cython cx-freeze

5
推荐指数
1
解决办法
916
查看次数

尝试使用 distutils 交叉编译 mingw32 的 SWIG 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}\n
Run Code Online (Sandbox Code Playgroud)\n\n

example.i - SWIG 接口文件

\n\n
/* File …
Run Code Online (Sandbox Code Playgroud)

python swig gcc distutils mingw

4
推荐指数
1
解决办法
2130
查看次数

C:与MinGW-w64静态/动态链接的正确方法

直观地:

  • MinGW-w64是GNU编译器工具(GCC等)的Windows端口。
  • Windows的预编译二进制文件是.dll(动态链接)/ .lib(静态链接)。
  • 但是,MinGW-w64使用GNU编译器工具,因此需要.so/ .abinary。

我发现了什么:

不幸的是,我在MinGW和MinGW-w64上找不到明确的文档来说明在动态/静态链接库时正确与错误的地方。

根据我的经验,我一直能够动态链接到.dll。一次,我能够静态链接到.lib(使用-static标志)。

题:

.dll/ .a与MinGW的-W64 GCC工具链编译的二进制文件时拨出动,静链接库?换句话说,为MSVC生成的动态库和为GCC生成的静态库?

windows gcc dynamic-linking mingw-w64

4
推荐指数
1
解决办法
6938
查看次数

如何编译Ruby C扩展并在Windows上链接libcurl

我正在尝试构建一个使用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以便我的编译器可以找到它们.

c ruby windows nmake ruby-c-extension

3
推荐指数
1
解决办法
4034
查看次数