summaryrefslogtreecommitdiff
path: root/exports/generate_lib.ps1
diff options
context:
space:
mode:
Diffstat (limited to 'exports/generate_lib.ps1')
-rw-r--r--exports/generate_lib.ps130
1 files changed, 30 insertions, 0 deletions
diff --git a/exports/generate_lib.ps1 b/exports/generate_lib.ps1
new file mode 100644
index 0000000..ac452ca
--- /dev/null
+++ b/exports/generate_lib.ps1
@@ -0,0 +1,30 @@
+<#
+.SYNOPSIS
+ Generate .lib import library file for specified .dll file.
+.NOTES
+ Requires dumpbin & lib, may need to execute through VS developer shell.
+#>
+
+param (
+ [string]$DllPath
+)
+
+# Compatible with both Windows PowerShell and PowerShell Core
+
+$ErrorActionPreference = "Stop"
+
+$dll = Get-Item $DllPath
+$def = Join-Path $dll.Directory "$( $dll.BaseName ).def"
+$lib = Join-Path $dll.Directory "$( $dll.BaseName ).lib"
+$machine = (dumpbin /nologo /headers $dll.FullName |
+ Select-String -AllMatches 'machine \((.+)\)').Matches[0].Groups[1].Value
+
+"LIBRARY $( $dll.BaseName )`nEXPORTS`n" + (
+(dumpbin /nologo /exports $dll.FullName |
+ Select-String -AllMatches '\d+\s+\d+\s+[0-9A-Z]+\s+(\S+)').Matches |
+ % { $_.Groups[1].Value } |
+ where { $_[0] -ne '_' } | # Skip _cgo_dummy_export
+Out-String) |
+ Set-Content $def
+
+lib /machine:$machine /def:"$def" /out:"$lib"