OK, first thing: if you declare a function as "local", it will only be known within its scope, which is at max the current lua file.
So in Tank.lua, declare the function as:
Code:
addonTable.SayHi = function()
print("Hi")
end
Second thing, your lua files are processed in the order they are stated in the TOC file.
So if you try to execute addonTable.SayHi() before your Tank.lua was processed, the function does not yet exist.