We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
On Windows, I managed to build polyscope as a shared library with a couple of changes:
--- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -374,4 +374,7 @@ set_target_properties(polyscope PROPERTIES POSITION_INDEPENDENT_CODE TRUE) add_definitions(-DNOMINMAX) +set_target_properties(polyscope PROPERTIES + WINDOWS_EXPORT_ALL_SYMBOLS ON +) # Include settings
imgui
--- a/deps/imgui/CMakeLists.txt +++ b/deps/imgui/CMakeLists.txt @@ -63,5 +63,5 @@ add_library( - imgui + imgui STATIC ${SRCS} )
Alternative: Export all symbols like 1.
stb
--- a/deps/stb/CMakeLists.txt +++ b/deps/stb/CMakeLists.txt @@ -1,5 +1,5 @@ # Create a library for the viewer code add_library( - stb + stb STATIC stb_impl.cpp )
I tried exporting all symbols but it did not work. I would get missing symbols:
[build] screenshot.cpp.obj : error LNK2001: unresolved external symbol "int stbi_write_png_compression_level" (?stbi_write_png_compression_level@@3HA)
set(GLM_BUILD_LIBRARY OFF CACHE BOOL "Use GLM as header-only" FORCE)
It is not optimal to export all symbols on Windows, but it works. Dropping this here for others to use.
Open to make a PR but I would rather figure out the approved method first 😄
The text was updated successfully, but these errors were encountered:
https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html For global data symbols, __declspec(dllimport) must still be used when compiling against the code in the .dll.
__declspec(dllimport)
So you still need to explicitly export global variables.
Sorry, something went wrong.
https://cmake.org/cmake/help/latest/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.html For global data symbols, __declspec(dllimport) must still be used when compiling against the code in the .dll. So you still need to explicitly export global variables.
Thank you! You are right. Because of that, I wasn't able to specify a user Callback. I had to create a export.h:
#ifndef POLYSCOPE_EXPORT_H #define POLYSCOPE_EXPORT_H #ifdef _WIN32 #ifdef POLYSCOPE_DLL_EXPORTS #define POLYSCOPE_API __declspec(dllexport) #else #define POLYSCOPE_API __declspec(dllimport) #endif #else #define POLYSCOPE_API #endif #endif // POLYSCOPE_EXPORT_H
and in polyscope.h, add it to the declaration like follows:
polyscope.h
POLYSCOPE_API extern std::function<void()>& userCallback;
then finally, add POLYSCOPE_DLL_EXPORTS to the definition:
POLYSCOPE_DLL_EXPORTS
target_compile_definitions(polyscope PRIVATE POLYSCOPE_DLL_EXPORTS)
I'm still a beginner with Polyscope so I'm not sure what other variables need exporting.
No branches or pull requests
On Windows, I managed to build polyscope as a shared library with a couple of changes:
imgui
as static. Again, it would search for a .lib file but no symbols are exported.Alternative: Export all symbols like 1.
stb
as static. Otherwise, it would search for a non-existent .lib file because no symbols are exported.I tried exporting all symbols but it did not work. I would get missing symbols:
It is not optimal to export all symbols on Windows, but it works. Dropping this here for others to use.
Open to make a PR but I would rather figure out the approved method first 😄
The text was updated successfully, but these errors were encountered: