Bootstrap

编译mg-samples-3.0.12报错:libminigui_ths.so: undefined reference to `WndClientRect'解决方法

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

.../lib/libminigui_ths.so: undefined reference to `WndClientRect'
.../lib/libminigui_ths.so: undefined reference to `pixel2rgb'

.../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一致,没有外部可见的函数生成,但是外部可见的函数必须存在,因为有可能会用到它。

;