rustからrustで作ったdllの呼び方を知りたいのですがリンキングしようとするとfailedしちゃいます。
解決方法はあるのでしょうか?
ソース
ファイル構造 ・/ ├ callingdll/ │ ├ src/ │ │ └ main.rs │ ├ target/ │ │ └ debug/... │ ├ build.rs │ ├ Cargo.lock │ └ Cargo.toml └ dlltest/ ├ src/ │ └ lib.rs ├ target/ │ └ release/ │ ├ … │ ├ dlltest.d │ ├ dlltest.dll │ ├ dlltest.dll.d │ └ dlltest.dll.lib ├ Cargo.lock └ Cargo.toml
lang
1// dlltest/src/lib.rs 2#[no_mangle] 3pub extern "C" fn hello() { 4 println!("Hello!"); 5}
lang
1# dlltest/Cargo.toml 2[package] 3name = "dlltest" 4version = "0.1.0" 5authors = ["ユーザ名 <メールアドレス>"] 6 7[dependencies] 8 9[lib] 10name = "dlltest" 11crate-type = ["dylib"]
lang
1// callingdll/src/main.rs 2#[link(name = "dlltest", kind = "dylib")] 3extern "C" { 4 fn hello(); 5} 6 7fn main() { 8 unsafe { hello(); } 9}
lang
1// callingdll/build.rs 2fn main() { 3 println!(r"cargo:rustc-link-search=native=..\dlltest\target\release"); 4 //絶対パスも試しましたがダメでした。 5}
lang
1# callingdll/Cargo.toml 2[package] 3name = "callingc" 4version = "0.1.0" 5authors = ["ユーザ名 <メールアドレス>"] 6 7[dependencies] 8
rustc version: 1.28.0.nightly (71e87be38 2018-05-22)
ずっと調べててそれでもわからなかったので質問しました。
無知な質問をしていたらすみません…回答お願いします。
追記
callingdllでcargo run --verboseした時のエラーは下記の通りです。
LNK1181を見る限りファイル関係の問題なのでしょうか…
Compiling callingdll v0.1.0 (file:///C:/dlltesting/callingdll) Running `rustc --crate-name callingdll src\main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=3e5dd5e7b1b0c2ed -C extra-filename=-3e5dd5e7b1b0c2ed --out-dir C:\dlltesting\callingdll\target\debug\deps -C incremental=C:\dlltesting\callingdll\target\debug\incremental -L dependency=C:\dlltesting\callingdll\target\debug\deps -L native=..\dlltest\target\release` error: linking with `C:\Program Files (x86)\Microsoft Visual Studio\allnew\VC\Tools\MSVC\14.14.26428\bin\HostX64\x64\link.exe` failed: exit code: 1181 | = note: "C:\Program Files (x86)\Microsoft Visual Studio\allnew\VC\Tools\MSVC\14.14.26428\bin\HostX64\x64\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib" "C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.10ygozpgsu0ud2lu.rcgu.o" "C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.1evrhzuhpd8ltllo.rcgu.o" "C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.1y16o1qfye96o7m0.rcgu.o" "C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.3rngp6bm2u2q5z0y.rcgu.o" "C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.4oc10dk278mpk1vy.rcgu.o" "/OUT:C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.exe" "C:\dlltesting\callingdll\target\debug\deps\callingdll-3e5dd5e7b1b0c2ed.crate.allocator.rcgu.o" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\intrinsic.natvis" "/NATVIS:C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\liballoc.natvis" "/NATVIS:C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\etc\libcore.natvis" "/LIBPATH:C:\dlltesting\callingdll\target\debug\deps" "/LIBPATH:..\dlltest\target\release" "/LIBPATH:C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib" "dlltest.lib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libstd-cac73b437b83476b.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libpanic_unwind-bcb5e04cac73fc66.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libunwind-5f2afd86d3924b70.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liblibc-24679fb279a08db9.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liballoc_system-b1fff24aa19ea685.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\liballoc-f05424e8e00221e4.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcore-d536cda45a971794.rlib" "C:\Users\ユーザー名\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib\libcompiler_builtins-dc70b1f5bd5e6342.rlib" "advapi32.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib" = note: Non-UTF-8 output: LINK : fatal error LNK1181: \x93\xfc\x97\xcd\x83t\x83@\x83C\x83\x8b \'dlltest.lib\' \x82\xf0\x8aJ\x82\xaf\x82\xdc\x82\xb9\x82\xf1\x81B\r\n error: aborting due to previous error error: Could not compile `callingdll`. Caused by: process didn't exit successfully: `rustc --crate-name callingdll src\main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=3e5dd5e7b1b0c2ed -C extra-filename=-3e5dd5e7b1b0c2ed --out-dir C:\dlltesting\callingdll\target\debug\deps -C incremental=C:\dlltesting\callingdll\target\debug\incremental -L dependency=C:\dlltesting\callingdll\target\debug\deps -L native=..\dlltest\target\release` (exit code: 101)
どのようなエラーが出力するか追記できますか?(dllの件は勘違いでした)
回答2件
あなたの回答
tips
プレビュー