Windows下MinGW编译MSQUIC示例程序报错,求正确编译方案
解决MinGW编译MSQUIC示例的错误问题
问题原因:MSQUIC官方预编译库基于MSVC编译器构建,MinGW的C语言ABI、宏定义与MSVC存在差异,导致
_Pre_defensive_这类MSVC专属宏未定义、函数指针类型不兼容等问题。正确编译方案:
- 编译时添加MSVC兼容宏定义,指定符合MSQUIC要求的C语言标准
- 显式链接MSQUIC库及Windows系统依赖库
- 确保运行时依赖的DLL文件路径正确
最终编译命令:
g++ sample.c -std=c11 -D_WIN32_WINNT=0x0A00 -DQUIC_API_MSC_VERSION=1930 -I msquic/include -L msquic/lib -lmsquic -lkernel32 -ladvapi32 -o main.exe参数说明:
-std=c11:指定C语言标准为C11,匹配MSQUIC的代码依赖-D_WIN32_WINNT=0x0A00:指定目标Windows版本为Windows 10,满足MSQUIC的系统要求-DQUIC_API_MSC_VERSION=1930:模拟MSVC 19.30的宏环境,解决_Pre_defensive_等宏未定义问题-lmsquic -lkernel32 -ladvapi32:链接MSQUIC库及Windows系统必要库,避免符号未定义错误
后续操作:编译完成后,将
msquic/bin/msquic.dll复制到main.exe所在目录,否则程序无法正常运行。
内容的提问来源于stack exchange,提问作者hari19
相关产品推荐
相关产品推荐

