未定义对'的引用_chkstk&x27;在代码块下使用带C的openssl库

未定义对'的引用_chkstk&x27;在代码块下使用带C的openssl库,c,windows,openssl,mingw,codeblocks,C,Windows,Openssl,Mingw,Codeblocks,我已经下载了openssl(x86)静态1.0.1g二进制文件,复制了“MinGW\lib”下的lib上下文和“MinGW\include”下包含includes文件的openssl文件夹 当我试图编译该项目时,在windows 7 64位下使用code::blocks 16.01 32位, 我收到了这个错误消息 ||=== Build: Debug in SFI_SMI_Check (compiler: GNU GCC Compiler) ===| C:\Program Files (x86)

我已经下载了openssl(x86)静态1.0.1g二进制文件,复制了“MinGW\lib”下的lib上下文和“MinGW\include”下包含includes文件的openssl文件夹

当我试图编译该项目时,在windows 7 64位下使用code::blocks 16.01 32位, 我收到了这个错误消息

||=== Build: Debug in SFI_SMI_Check (compiler: GNU GCC Compiler) ===|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libeay32.lib(tmp32\rand_win.obj):(.text[_readtimer]+0x6)||undefined reference to `_chkstk'|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libeay32.lib(tmp32\rand_win.obj):(.text[_readtimer]+0x2f)||undefined reference to `_chkstk'|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libeay32.lib(tmp32\rand_win.obj):(.text[_readtimer]+0x4f)||undefined reference to `_chkstk'|
C:\Program Files (x86)\CodeBlocks\MinGW\lib\libeay32.lib(tmp32\rand_win.obj):(.text[_readscreen]+0xfffffebc)||undefined reference to `_chkstk'|
||error: ld returned 1 exit status|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

您正在使用标准库的32位版本吗?因为在X86_64上,命名约定是不同的。向我们展示link命令是值得的。如果这是Makefile的一部分,请尝试将详细标志添加到编译器标志中。该
\u chkstk
是MSVC++特有的函数,这表明您使用的不是专门为MinGW构建的OpenSSL库,而是由Visual Studio编译器构建的库。虽然可以使用这些库,但您不需要链接VC++运行时支持所需的库和对象文件。尝试查找OpenSSL的MinGW版本。静态库将以
.a
结尾,而不是
.lib
@Someprogrammerdude。链接器错误消息显示
\u chkstk
C:\Program Files(x86)\CodeBlocks\MinGW\lib\libeay32.lib
中需要。似乎只是MinGW的一部分。我可能错了。
libeay32.lib
.lib
扩展清楚地表明它不是由MinGW为MinGW构建的。GCC的静态库有一个
.a
扩展,比如
libeay32.a
。我还建议您实际搜索
\u chkstk
,您将发现只与VC++相关的点击率。我认为一些编程人员是正确的。如果您使用的是MSVC编译器,那么感兴趣的开关是
/GS
。如果您使用的是GCC编译器,那么感兴趣的标志是
-fstack protector
-fstack protector all
。他们大多以同样的方式做同样的事情。