Hey there,
I just found a way to circumvent this error. Although it is not the nicest type of a “solution”, it makes the program running as expected.
Notes:
This error only occurs under windows. Therefore, using Unix is also a solution.
I am using the older Versions Omnet 5.0 and INET 3.4.0. This error may not occur under newer versions. However, the INET code is still the same and this error was not mentioned in the INET changelogs at the time of writing.
“Solution” on Windows:
Write your own class that inherits from L3AddressResolver and copy the code from L3AddressResolver:
class MyL3AddressResolver : public L3AddressResolver
…
Use an instance of this class:
Old (you get a segmentation fault):
inet::L3AddressResolver().tryResolve()
New (working):
dummyL3AddressResolver = new MyL3AddressResolver();
dummyL3AddressResolver->tryResolve(token, result);
Explanation (at least a try):
While debugging, I found that the method L3AddressResolver.addressOf() cannot be found although the program finds L3AddressResolver.tryResolve(). Actually, the debugger is complaining the following:
can't find linker symbol for virtual table for `inet::L3AddressResolver' value
I guess that the virtual table is not set up correctly under Windows in this case and the Unix compiler works better here for some reason.