我开发了一个用 C++ 编写的模块,用于管理我公司产品的许可证。为了防止 DLL 替换,我们的目标是在解决方案中静态链接 DLL。这在 C++ 中很容易做到,但事实证明对于我们用 Fortran 编写的部分代码库来说有点问题。
我意识到这可能因编译器而异(我们使用 Intel Fortran 9.1),但是是否有任何通用的方法在 Fortran 中实现 C++ DLL 的静态链接?
最佳答案
要获得静态链接,通常的方法不是使用 DLL,而是使用简单的库 (*.lib)。这与编程语言无关:它仅取决于操作系统。
构建库也比构建 DLL 简单。在 Unix 上,库的后缀为 .a,而 DLL 的后缀为 .so(用于共享对象)。
然而,通常可以静态链接 DLL,但这是通过传递给链接器的特定选项获得的。例如,在 Unix 上,有许多编译器套件,选项是 -static 或 -Bstatic。查看编译器编程手册中的关键字“static”。
关于c++ - Fortran 中的静态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755382/