diff --git a/vlib/dl/dl.v b/vlib/dl/dl.v index 46b0a23e6e..f2cb7e70d4 100644 --- a/vlib/dl/dl.v +++ b/vlib/dl/dl.v @@ -5,6 +5,8 @@ pub const ( dl_ext = get_shared_library_extension() ) +// get_shared_library_extension returns the platform dependent shared library extension +// i.e. .dll on windows, .so on most unixes, .dylib on macos. pub fn get_shared_library_extension() string { mut res := '.so' $if macos { diff --git a/vlib/dl/example/library.v b/vlib/dl/example/library.v index 9be3480298..ed3658c911 100644 --- a/vlib/dl/example/library.v +++ b/vlib/dl/example/library.v @@ -1,10 +1,19 @@ module library +// add_1 is exported with the C name `add_1`. +// It can be called by external programs, when the module is compiled +// as a shared library. +// It is exported, because the function is declared as public with `pub`. +// The exported C name is `add_1`, because of the export: tag. +// (Normally, the exported name is a V mangled version based on the module +// name followed by __, followed by the fn name, i.e. it would have been +// `library__add_1`, if not for the export: tag). [export: 'add_1'] pub fn add_1(x int, y int) int { return my_private_function(x + y) } +// this function is not exported and will not be visible to external programs. fn my_private_function(x int) int { return 1 + x }