跨平台动态链接(Windows到Linux)

2Ni*_*meo 5 c++ dll cross-platform

我有一个应用程序,我已设法在Windows和Linux之间保持合理的跨平台.Cmake和Boost在这方面的努力是有帮助的.

现在是链接到为Windows编写的.dll的时候了.如果我可以推迟动态链接库的转换,那将是一件好事.其他Windows应用程序连接到此库,如下所示:

HINSTANCE dll;
dll = LoadLibraryA(filename);
//...
libFuncPtr = (libFuncPtr)GetProcAddress(dll, "libFunc");
Run Code Online (Sandbox Code Playgroud)

我想知道这些函数是否有通用类似物,或者是时候开始放入我的系统特定预处理程序指令了?当前的开发优先级是Windows,据了解,必须有一个用于Linux构建的库的Linux端口才能工作,但我希望尽可能保持调用代码的通用性.

kar*_*lip 6

开始删除系统特定的预处理程序指令.

你可以写一个中介接口,提供类似的功能LoadLib(),LoadSym()等等,调用aproppriate原生API.换句话说,当编译Windows时LoadLib()将使用LoadLibraryA()和将在Linux上使用dlopen().

这将让您从主代码中隐藏代码的这个丑陋部分,使其更具可读性.