OK I should have clarified that some of my options have optional arguments, that is 0 or 1 or more. This presented a problem when you do something like this:
cmd -option mandatory_arg
When -option is allowed any number of arguments, including 0. However I think I fixed my problem using a variation of what linuxer told me, basically set the last argument in the ARGV array to "--" before GetOptions is called.