[EDIT - previous answer deleted, irrelevant]
Haven't seen this in a while. The problem lies with your return statements in the load function. You are returning 0's and 1's, not true or false. This can be confusing, especially when you confuse it with another programming standard of returning 0 for success and a non-zero for errors.
The load() function requires returning a bool, not a number, so as best practice, you should always return true or false when a bool is called for. (Always return the correct type from a function, not something that has to be cast or interpreted.) The code is returning 0 for success and 1 for failure. Unfortunately, 0 is always interpreted as false and 1 (or any other non-zero, + or -) is interpreted as true. This code is (apparently) completing the load function, but returning false, so the code in speller.c sees it as a failure and prints the "could not load" message.
99 times out of 100, this is a failure to have the dictionary file in the correct place. Your error is the 1 in 100! ;-)
If this answers your question, please click on the check mark to accept. Let's keep up on forum maintenance. ;-)