回答編集履歴
3
import library (.lib) について追記しました
answer
CHANGED
@@ -19,4 +19,12 @@
|
|
19
19
|
|
20
20
|
`cdylib`を指定しても解決しない場合は、それに加えて以下も試してみてください。
|
21
21
|
|
22
|
-
* (もしまだ試してなかったら)`.dll`ファイルを`./target/release`から移動せずにVBAから読み込んでみる。
|
22
|
+
* (もしまだ試してなかったら)`.dll`ファイルを`./target/release`から移動せずにVBAから読み込んでみる。
|
23
|
+
|
24
|
+
**追記(2020/5/6 09:45 +0900)**
|
25
|
+
|
26
|
+
> もうひとつのファイルの拡張子がなんだったのか思い出せないのですが、
|
27
|
+
|
28
|
+
確認したところ`.lib`でした。このファイルはimport libraryといって、DLLを利用するプログラム側の **コンパイル時** に必要なようです。実行時はそのファイルのことは無視していいのかもしれません。
|
29
|
+
|
30
|
+
- [https://github.com/rust-lang/cargo/issues/4500](https://github.com/rust-lang/cargo/issues/4500)
|
2
他の可能性について追記しました
answer
CHANGED
@@ -6,4 +6,17 @@
|
|
6
6
|
|
7
7
|
`dylib`を指定したときに生成されるdllはRustで書かれたプログラムから使用されることが想定されており、余分な情報が入っているようです。ExcelのようなRust以外の言語で書かれたプログラムから使用するときは`cdylib`を指定します。
|
8
8
|
|
9
|
-
参考: [Linkage - The Rust Reference](https://doc.rust-lang.org/reference/linkage.html)
|
9
|
+
参考: [Linkage - The Rust Reference](https://doc.rust-lang.org/reference/linkage.html)
|
10
|
+
|
11
|
+
**追記(2020/5/6 09:30 +0900)**
|
12
|
+
|
13
|
+
いま手元にWindows環境がないので試せないのですが、2年ほど前に試したときは`cdylib`を指定することに加えて、以下の点も注意する必要があったように思います。(うろ覚えですし、いまは変わっているかもしれません)
|
14
|
+
|
15
|
+
* `.dll`ファイルの他にもうひとつファイルがないと動かなかった(?)
|
16
|
+
* `.dll`かもうひとつのファイルかどちらかの中に、相手のファイルのフルパスが埋め込まれていた。そのため、それらのファイルを元の場所から移動すると動かなくなってしまった(?)
|
17
|
+
|
18
|
+
その時はRustで作ったDLLをCプログラムから呼び出す実験をしてました。もうひとつのファイルの拡張子がなんだったのか思い出せないのですが、Cargoでビルドしたときに`./target/release`直下にDLLと一緒に出力されるはずです。
|
19
|
+
|
20
|
+
`cdylib`を指定しても解決しない場合は、それに加えて以下も試してみてください。
|
21
|
+
|
22
|
+
* (もしまだ試してなかったら)`.dll`ファイルを`./target/release`から移動せずにVBAから読み込んでみる。
|
1
書式の修正:外部サイトにあるリファレンスのURLをクリックできるようにしました
answer
CHANGED
@@ -6,4 +6,4 @@
|
|
6
6
|
|
7
7
|
`dylib`を指定したときに生成されるdllはRustで書かれたプログラムから使用されることが想定されており、余分な情報が入っているようです。ExcelのようなRust以外の言語で書かれたプログラムから使用するときは`cdylib`を指定します。
|
8
8
|
|
9
|
-
https://doc.rust-lang.org/reference/linkage.html
|
9
|
+
参考: [Linkage - The Rust Reference](https://doc.rust-lang.org/reference/linkage.html)
|