You don't need either .mxo or .mxe for externals in your patch; just the name of the external without suffix inside a box.
When you write something like "OSC-route" in a box in a patch, Max will search for the right flavor of .mxo/.mxe for the current OS/architecture. Note that it will also search for filenames ending in .mxb, .mxt, .pat, and any other suffix that Max is currently likely be able to parse.
The upshot of this, btw, is that you should never give a patcher the same name as a standard object. Did I say never? NEVER. Practically every beginner does this, and it invariably leads to patches that won't load because the wrong file is found, followed by queries to the list (usually followed by avid denials that the user didn't do anything of the sort until the offending file is found with Spotlight or whatever). It's nice that Max can load files without worrying about extensions (and there's lots of legacy about why this is so), but it can come back to bite you.