GNU ld
может сделать это на платформах ELF.
Вот то, как сделать это со сценарием версии компоновщика:
/* foo.c */
int foo() { return 42; }
int bar() { return foo() + 1; }
int baz() { return bar() - 1; }
gcc -fPIC -shared -o libfoo.so foo.c && nm -D libfoo.so | grep ' T '
По умолчанию, все символы экспортируются:
0000000000000718 T _fini
00000000000005b8 T _init
00000000000006b7 T bar
00000000000006c9 T baz
00000000000006ac T foo
Скажем, Вы хотите экспортировать [только 116] и baz()
. Создайте "сценарий версии" libfoo.version
:
FOO {
global: bar; baz; # explicitly list symbols to be exported
local: *; # hide everything else
};
Передача это компоновщику:
gcc -fPIC -shared -o libfoo.so foo.c -Wl,--version-script=libfoo.version
Наблюдают экспортируемые символы:
nm -D libfoo.so | grep ' T '
00000000000005f7 T bar
0000000000000609 T baz
WPF имеет встроенные (но не родные ) диалоговые окна файлов. В частности, они находятся в несколько неожиданном пространстве имен Microsoft.Win32
(хотя все еще являются частью WPF). См., В частности, классы OpenFileDialog
и SaveFileDialog
.
Однако обратите внимание, что эти классы являются лишь оболочкой для функциональности Win32, как предполагает родительское пространство имен. Однако это означает, что вам не нужно выполнять какое-либо взаимодействие WinForms или Win32, что делает его более удобным в использовании. К сожалению, диалоговые окна по умолчанию имеют стиль в «старой» теме Windows, и вам понадобится небольшой взлом в app.manifest
, чтобы заставить его использовать новую.