As of JDK1.5 Java has AES built in through the JCE (Java Cryptographic Extension). To get a match you will need to specify "AES/ECB/NoPadding" when constructing the Cipher object.
You should note that in it's raw form aes128_enc_single() in effect uses ECB block mode which is considered insecure since it permits forgery of ciphertext by splicing. To be secure you need to add code to use one of the feedback block modes such CBC and then you will need to modify the Java to use the same block mode.
Also, if you are not encrypting a multiple of 16 bytes you will need to provide padding on the encryption side and to remove the padding on the decryption side. Java has PKCS5Padding as standard so it might be easiest if you just mimic this in your C/C++ code.