回答編集履歴

3

import library (.lib) について追記しました

2020/05/06 00:45

投稿

tatsuya6502
tatsuya6502

スコア2046

test CHANGED
@@ -41,3 +41,19 @@
41
41
 
42
42
 
43
43
  * (もしまだ試してなかったら)`.dll`ファイルを`./target/release`から移動せずにVBAから読み込んでみる。
44
+
45
+
46
+
47
+ **追記(2020/5/6 09:45 +0900)**
48
+
49
+
50
+
51
+ > もうひとつのファイルの拡張子がなんだったのか思い出せないのですが、
52
+
53
+
54
+
55
+ 確認したところ`.lib`でした。このファイルはimport libraryといって、DLLを利用するプログラム側の **コンパイル時** に必要なようです。実行時はそのファイルのことは無視していいのかもしれません。
56
+
57
+
58
+
59
+ - [https://github.com/rust-lang/cargo/issues/4500](https://github.com/rust-lang/cargo/issues/4500)

2

他の可能性について追記しました

2020/05/06 00:45

投稿

tatsuya6502
tatsuya6502

スコア2046

test CHANGED
@@ -15,3 +15,29 @@
15
15
 
16
16
 
17
17
  参考: [Linkage - The Rust Reference](https://doc.rust-lang.org/reference/linkage.html)
18
+
19
+
20
+
21
+ **追記(2020/5/6 09:30 +0900)**
22
+
23
+
24
+
25
+ いま手元にWindows環境がないので試せないのですが、2年ほど前に試したときは`cdylib`を指定することに加えて、以下の点も注意する必要があったように思います。(うろ覚えですし、いまは変わっているかもしれません)
26
+
27
+
28
+
29
+ * `.dll`ファイルの他にもうひとつファイルがないと動かなかった(?)
30
+
31
+ * `.dll`かもうひとつのファイルかどちらかの中に、相手のファイルのフルパスが埋め込まれていた。そのため、それらのファイルを元の場所から移動すると動かなくなってしまった(?)
32
+
33
+
34
+
35
+ その時はRustで作ったDLLをCプログラムから呼び出す実験をしてました。もうひとつのファイルの拡張子がなんだったのか思い出せないのですが、Cargoでビルドしたときに`./target/release`直下にDLLと一緒に出力されるはずです。
36
+
37
+
38
+
39
+ `cdylib`を指定しても解決しない場合は、それに加えて以下も試してみてください。
40
+
41
+
42
+
43
+ * (もしまだ試してなかったら)`.dll`ファイルを`./target/release`から移動せずにVBAから読み込んでみる。

1

書式の修正:外部サイトにあるリファレンスのURLをクリックできるようにしました

2020/05/06 00:35

投稿

tatsuya6502
tatsuya6502

スコア2046

test CHANGED
@@ -14,4 +14,4 @@
14
14
 
15
15
 
16
16
 
17
- https://doc.rust-lang.org/reference/linkage.html
17
+ 参考: [Linkage - The Rust Reference](https://doc.rust-lang.org/reference/linkage.html)