From a66ee61564cd5f88d772d0966d32bfa4799113e2 Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Thu, 21 Mar 2024 16:34:49 +0100 Subject: [PATCH] Windows CUDA compilation fixes --- configure.ac | 3 ++- src/host.cpp | 5 +++++ src/libavcodec/from_lavc_vid_conv_cuda.cu | 1 + src/libavcodec/to_lavc_vid_conv_cuda.cu | 1 + 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f4259121e..a7dd050ec 100644 --- a/configure.ac +++ b/configure.ac @@ -191,7 +191,8 @@ AC_ARG_ENABLE(all, ) if test $system = Windows; then - CUDA_FLAGS="$CUDA_FLAGS -Xcompiler -FS" + CUDA_FLAGS="$CUDA_FLAGS -Xcompiler -FS -Xcompiler -GS-" + LDFLAGS="$LDFLAGS -Xlinker //nodefaultlib" else CFLAGS="$CFLAGS -fPIC" CXXFLAGS="$CXXFLAGS -fPIC" diff --git a/src/host.cpp b/src/host.cpp index b0ca22a73..ae5d3a7c0 100644 --- a/src/host.cpp +++ b/src/host.cpp @@ -163,6 +163,11 @@ std::unordered_map commandline_params; mainloop_t mainloop; void *mainloop_udata; +#if defined HAVE_CUDA && defined _WIN32 +// required for NVCC+MSVC compiled objs if /nodefaultlib is used +extern "C" int _fltused = 0; +#endif + struct init_data { bool com_initialized = false; list opened_libs; diff --git a/src/libavcodec/from_lavc_vid_conv_cuda.cu b/src/libavcodec/from_lavc_vid_conv_cuda.cu index e2929743e..25db809b0 100644 --- a/src/libavcodec/from_lavc_vid_conv_cuda.cu +++ b/src/libavcodec/from_lavc_vid_conv_cuda.cu @@ -47,6 +47,7 @@ extern "C" void log_msg(int log_level, const char *format, ...); struct av_to_uv_convert_cuda { enum AVPixelFormat in_codec; codec_t out_codec; + virtual ~av_to_uv_convert_cuda() = default; }; struct av_to_uv_convert_cuda * diff --git a/src/libavcodec/to_lavc_vid_conv_cuda.cu b/src/libavcodec/to_lavc_vid_conv_cuda.cu index f142fb0d8..0a7957c8c 100644 --- a/src/libavcodec/to_lavc_vid_conv_cuda.cu +++ b/src/libavcodec/to_lavc_vid_conv_cuda.cu @@ -48,6 +48,7 @@ using std::shared_ptr; struct to_lavc_vid_conv_cuda { shared_ptr out_frame; + virtual ~to_lavc_vid_conv_cuda() = default; }; struct to_lavc_vid_conv_cuda *