Sorry all, I posted prematurely because I ended up answering my own question.
In ptpcam.h there are these lines:
22 #ifdef LINUX_OS
23 #define USB_BULK_READ myusb_bulk_read
24 #define USB_BULK_WRITE myusb_bulk_write
25 int myusb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,
26 int timeout);
27 int myusb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int length,
28 int timeout);
29 #else
30 #define USB_BULK_READ usb_bulk_read
31 #define USB_BULK_WRITE usb_bulk_write
32 #endif
Well, for some reason, if I comment out lines 22-29 and 32 so it looks like this:
22 //#ifdef LINUX_OS
23 //#define USB_BULK_READ myusb_bulk_read
24 //#define USB_BULK_WRITE myusb_bulk_write
25 //int myusb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,
26 // int timeout);
27 //int myusb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int length,
28 // int timeout);
29 //#else
30 #define USB_BULK_READ usb_bulk_read
31 #define USB_BULK_WRITE usb_bulk_write
32 //#endif
It works. It seems that myusb_bulk_write() just wasn't compatible with Angstrom in some way. Again, this only applies to the Angstrom distribution, everything worked fine in Ubuntu without doing this.