今天帮助同事查找一个问题,就是他编译了一个动态库。然后用demo加载这个动态库,有一个函数被调用的时候,始终无法找到定义,即undefined reference,而其他函数都没有问题,但是格式都是一样的。
用nm -D查看这个动态库,仔细排查,发觉函数中有个参数 HWND,其他的参数都是基本类型,而这个参数是#define自定义的类型,把这个参数改为基本类型后,就没有问题了。难道是HWND这个参数已有定义了?查找了一遍,果然发觉这个动态库依赖的另外一个库中也定义了HWND这个类型,一个定义为long,一个定义为long long,两个类型不一样导致无法找到函数实现。