MPLAB XC8 + PIC18 + external memory = Error 712 (can't generate code for this expression)
I was just having a play around with this and it seems like something you should report to Microchip but I have found a workaround that might be useful in the interim. The problem only seems to occur with multi-byte variables outside an array or when trying to access the first element of an array. The following code compiles OK and seems to generate plausible assembler output although I didn't have a chip with external RAM to test:

#include &lt;xc.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdint.h&gt;

far uint8_t intVariable;
far int intArray[1000];

void main(void) {
    intVariable = 1;
//    intArray[0] = 3; &lt;&lt;- Causes an error
    intArray[1] = 3;
    intArray[999] = 3;
    printf("%d\n", intVariable);
    printf("%d\n", intArray[1]);
}


I suspect based on that it tries to perform some optimization on writing to a multi-byte variable that falls down, but when inside an array it generates the full code to calculate the offset that seems to work OK. Note that I only have the free compiler so the pro edition may optimize out the constant array access, but I'd imagine changing the index to a variable would fix that if it does happen.

When I compared my compiler / linker options to yours under the XC8 compiler optimizations I also had to enable "Instruction Invariant Mode" for it to work. Hopefully that might get you up and running and it might be a good additional test case to submit to Microchip.