我正在使用没有 MSYS 的 MinGW64 (Windows 7),我遇到以下问题:
我有一个用 C99 编写的 dll,它必须具有 .mexw64 后缀,以便 Matlab 可以使用它。我希望能够从另一个 dll (mexw64) 动态链接这个 dll,但 gcc 不允许我直接链接。我不能进行静态链接,因为两个 dll 都有许多同名的函数,可以通过在创建共享库时不导出它们的符号来隐藏这些函数。
到目前为止,我已经尝试过:
- 使用 mklink 创建符号链接(带有正确的后缀和前缀)。这可行,但我无法从 makefile 运行 mklink。也许是因为我没有使用可能有 ln -s 的 MSYS(我没有检查过)。
- 复制第一个 dll 并更正后缀和前缀。这比我预期的要好,因为在运行时第二个 dll 实际上使用原始 .mexw64 而不是 dll 副本。我想这只是因为首先找到了 .mexw64,但是为什么首先搜索 .mexw64 呢?系统如何知道它实际上是一个dll?
我的问题是,这是否正确/安全?还有其他选择吗?
感谢您的评论。