@@ -147,20 +147,15 @@ fn build_def_file(
147
147
// Create the .def output file
148
148
let def_file = cargo_util:: paths:: create ( targetdir. join ( format ! ( "{name}.def" ) ) ) ?;
149
149
150
- write_def_file ( name , dll_file, def_file) ?;
150
+ write_def_file ( dll_file, def_file) ?;
151
151
}
152
152
153
153
Ok ( ( ) )
154
154
}
155
155
156
- fn write_def_file < W : std:: io:: Write > (
157
- name : & str ,
158
- dll_file : object:: File ,
159
- mut def_file : W ,
160
- ) -> anyhow:: Result < W > {
156
+ fn write_def_file < W : std:: io:: Write > ( dll_file : object:: File , mut def_file : W ) -> anyhow:: Result < W > {
161
157
use object:: read:: Object ;
162
158
163
- writeln ! ( def_file, "LIBRARY \" {name}.dll\" " ) ?;
164
159
writeln ! ( def_file, "EXPORTS" ) ?;
165
160
166
161
for export in dll_file. exports ( ) ? {
@@ -171,7 +166,7 @@ fn write_def_file<W: std::io::Write>(
171
166
Ok ( def_file)
172
167
}
173
168
174
- /// Build import library for windows-gnu
169
+ /// Build import library for windows
175
170
fn build_implib_file (
176
171
ws : & Workspace ,
177
172
build_targets : & BuildTargets ,
@@ -202,22 +197,30 @@ fn build_implib_file(
202
197
}
203
198
} ;
204
199
205
- let lib_path = build_targets. impl_lib . as_ref ( ) . unwrap ( ) ;
200
+ let lib_name = build_targets
201
+ . shared_output_file_name ( )
202
+ . unwrap ( )
203
+ . into_string ( )
204
+ . unwrap ( ) ;
205
+ let implib_path = build_targets. impl_lib . as_ref ( ) . unwrap ( ) ;
206
206
207
- let lib_file = cargo_util:: paths:: create ( lib_path ) ?;
208
- write_implib ( lib_file , machine_type, flavor, & def_contents) ?;
207
+ let implib_file = cargo_util:: paths:: create ( implib_path ) ?;
208
+ write_implib ( implib_file , lib_name , machine_type, flavor, & def_contents) ?;
209
209
}
210
210
211
211
Ok ( ( ) )
212
212
}
213
213
214
214
fn write_implib < W : std:: io:: Write + std:: io:: Seek > (
215
215
mut w : W ,
216
+ lib_name : String ,
216
217
machine_type : MachineType ,
217
218
flavor : Flavor ,
218
219
def_contents : & str ,
219
220
) -> anyhow:: Result < W > {
220
- let module_def = ModuleDef :: parse ( def_contents, machine_type) ?;
221
+ let mut module_def = ModuleDef :: parse ( def_contents, machine_type) ?;
222
+ module_def. import_name = lib_name;
223
+
221
224
let import_library = ImportLibrary :: from_def ( module_def, machine_type, flavor) ;
222
225
223
226
import_library. write_to ( & mut w) ?;
0 commit comments