Thank you, hippo. It turned out that I was reading the manual of Crypt::CBC of which the version is newer than the package installed in my Linux. Therefore, some features such as SHA-256 key derivation algorithm and -pbkdf=>'pbkdf2' are not available in my system. After removing related codes in my Perl script, it works finally. My C++ application can now decrypt data that was encrypted by Perl script, and vice versa.
Just a tip for future reference:
about halfway down the panel on the left-hand side (on both the module & distribution pages)
you'll see a selection list with "Jump to version" —
use this to align with whatever version you're working with.
This is true for most (if not all) modules; it's not specific to Crypt::CBC.