MSYS なしで MinGW64 (Windows 7) を使用していますが、次の問題があります。
C99 で記述された dll が 1 つあり、Matlab で使用できるように .mexw64 サフィックスが必要です。この dll フォームを別の dll (mexw64) に動的にリンクできるようにしたいのですが、gcc では直接リンクできません。共有ライブラリの作成時にシンボルをエクスポートしないことで非表示にできる同じ名前の関数が両方の dll に多数あるため、静的リンクを実行できません。
これまでのところ、私は試しました:
- mklink を使用して (正しいサフィックスとプレフィックスを使用して) シンボリック リンクを作成するには。これは機能しますが、makefile から mklink を実行できませんでした。多分それは、ln -s を持つことができる MSYS を使用していないという事実によるものです (私はチェックしていません)。
- 最初の dll のコピーを行い、サフィックスとプレフィックスを修正します。これは、実行時に 2 番目の dll が実際には元の .mexw64 を使用し、dll のコピーを使用しないため、予想よりもうまく機能しました。.mexw64が最初に見つかったからだと思いますが、そもそも.mexw64が検索されるのはなぜですか? システムはそれが実際にdllであることをどのように認識していますか?
私の質問は、これは正しい/安全ですか? 他のオプションはありますか?
コメントありがとうございます。