一个奇怪的动态库函数链接无法找到定义的问题

今天帮助同事查找一个问题,就是他编译了一个动态库。然后用demo加载这个动态库,有一个函数被调用的时候,始终无法找到定义,即undefined reference,而其他函数都没有问题,但是格式都是一样的。

用nm -D查看这个动态库,发觉其他函数都正常,只有这个函数名称被改变,就是前面加了一些字符,后面也加了一些字符。

仔细排查,发觉函数中有个参数 HWND,其他的参数都是基本类型,而这个参数是#define自定义的类型,把这个参数改为基本类型后,就没有问题了。难道是HWND这个参数已有定义了?查找了一遍,果然发觉这个动态库依赖的另外一个库中也定义了HWND这个类型,一个定义为long,一个定义为long long,两个类型不一样导致无法找到函数实现。

你可能感兴趣的:(c++)