转:ubuntu16.04(32位)gcc 5.2.0去编译mg-samples-3.0.12问题

用gcc 5.2.0去编译mg-samples-3.0.12,报错:

…/lib/libminigui_ths.so: undefined reference to WndClientRect' .../lib/libminigui_ths.so: undefined reference topixel2rgb’

…/lib/libminigui_ths.so: undefined reference to `WndRect’

解决方法:

$cd libminigui-3.0.12-linux

$grep -r “WndClientRect” .

发现WndClientRect在libminigui-3.0.12-linux/src/newgdi/gdi.c中,将inline void WndRect(HWND hWnd, PRECT prc)和inline void WndClientRect(HWND hWnd, PRECT prc)前面的inline去掉。

$grep -r “pixel2rgb” .

发现pixel2rgb在libminigui-3.0.12-linux/src/mybmp/winbmp.c中,将inline void pixel2rgb (gal_pixel pixel, GAL_Color* color, int depth)前面的inline去掉。

$make clean;make;make install

重新生成库文件。

再去编例子程序就OK了。

原因:

因编译器版本差异,c99对inline的处理与c89的extern inline一致,没有外部可见的函数生成,但是外部可见的函数必须存在,因为有可能会用到它。

作者:readnap
来源:CSDN
原文:https://blog.csdn.net/readnap/article/details/80364748
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/qq_18204721/article/details/83989648