Skip to content
New issue

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

windows下编译成功后,执行exe文件报错:无法定位程序输入点 cudaMallocAsync 于动态链接库 #217

Open
manfrey666 opened this issue May 22, 2024 · 8 comments

Comments

@manfrey666
Copy link

问题

windows编译成功后,执行exe文件报错。报错如下:
无法定位程序输入点 cudaMallocAsync 于动态链接库
Unable to locate program input point "cudaMallocAsync" in dynamic link library

运行环境

Windows 11
Cuda 11.6
TensorRT 8.6.1.6

CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(yolov8 LANGUAGES CXX CUDA)

set(CMAKE_CUDA_ARCHITECTURES 89)
set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")
# set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
set(CMAKE_CUDA_COMPILER ${CUDA_DIR}/bin)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_BUILD_TYPE Release)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)

# CUDA
#set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")
#set(CUDA_INCLUDE_DIRS ${CUDA_DIR}/include}
#set(CUDA_LIBRARIES ${CUDA_DIR}/lib/x64)
find_package(CUDA REQUIRED)
message(STATUS "CUDA Libs: \n${CUDA_LIBRARIES}\n")
get_filename_component(CUDA_LIB_DIR ${CUDA_LIBRARIES} DIRECTORY)
message(STATUS "CUDA Headers: \n${CUDA_INCLUDE_DIRS}\n")


# OpenCV
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV Libs: \n${OpenCV_LIBS}\n")
message(STATUS "OpenCV Libraries: \n${OpenCV_LIBRARIES}\n")
message(STATUS "OpenCV Headers: \n${OpenCV_INCLUDE_DIRS}\n")

# TensorRT
set(TENSORRT_DIR "D:/Dev/TensorRT/TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8/TensorRT-8.6.1.6")
set(TensorRT_INCLUDE_DIRS ${TENSORRT_DIR}/include)
set(TensorRT_LIBRARIES ${TENSORRT_DIR}/lib)


message(STATUS "TensorRT Libs: \n${TensorRT_LIBRARIES}\n")
message(STATUS "TensorRT Headers: \n${TensorRT_INCLUDE_DIRS}\n")

list(APPEND INCLUDE_DIRS
        ${CUDA_INCLUDE_DIRS}
        ${OpenCV_INCLUDE_DIRS}
        ${TensorRT_INCLUDE_DIRS}
	include
        )

list(APPEND ALL_LIBS
        ${CUDA_LIBRARIES}
        ${CUDA_LIB_DIR}
        ${OpenCV_LIBRARIES}
        ${TensorRT_LIBRARIES}
        )

include_directories(${INCLUDE_DIRS})

add_executable(${PROJECT_NAME}
        main.cpp
        include/yolov8.hpp
        include/common.hpp
        )

target_link_directories(${PROJECT_NAME} PUBLIC ${ALL_LIBS})
target_link_libraries(${PROJECT_NAME} PRIVATE nvinfer nvinfer_plugin cudart ${OpenCV_LIBS})
@triple-Mu
Copy link
Owner

问题

windows编译成功后,执行exe文件报错。报错如下: 无法定位程序输入点 cudaMallocAsync 于动态链接库 Unable to locate program input point "cudaMallocAsync" in dynamic link library

运行环境

Windows 11 Cuda 11.6 TensorRT 8.6.1.6

CMakeLists.txt

cmake_minimum_required(VERSION 3.1)
project(yolov8 LANGUAGES CXX CUDA)

set(CMAKE_CUDA_ARCHITECTURES 89)
set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")
# set(CMAKE_CUDA_COMPILER /usr/local/cuda/bin/nvcc)
set(CMAKE_CUDA_COMPILER ${CUDA_DIR}/bin)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_BUILD_TYPE Release)
option(CUDA_USE_STATIC_CUDA_RUNTIME OFF)

# CUDA
#set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")
#set(CUDA_INCLUDE_DIRS ${CUDA_DIR}/include}
#set(CUDA_LIBRARIES ${CUDA_DIR}/lib/x64)
find_package(CUDA REQUIRED)
message(STATUS "CUDA Libs: \n${CUDA_LIBRARIES}\n")
get_filename_component(CUDA_LIB_DIR ${CUDA_LIBRARIES} DIRECTORY)
message(STATUS "CUDA Headers: \n${CUDA_INCLUDE_DIRS}\n")


# OpenCV
find_package(OpenCV REQUIRED)
message(STATUS "OpenCV Libs: \n${OpenCV_LIBS}\n")
message(STATUS "OpenCV Libraries: \n${OpenCV_LIBRARIES}\n")
message(STATUS "OpenCV Headers: \n${OpenCV_INCLUDE_DIRS}\n")

# TensorRT
set(TENSORRT_DIR "D:/Dev/TensorRT/TensorRT-8.6.1.6.Windows10.x86_64.cuda-11.8/TensorRT-8.6.1.6")
set(TensorRT_INCLUDE_DIRS ${TENSORRT_DIR}/include)
set(TensorRT_LIBRARIES ${TENSORRT_DIR}/lib)


message(STATUS "TensorRT Libs: \n${TensorRT_LIBRARIES}\n")
message(STATUS "TensorRT Headers: \n${TensorRT_INCLUDE_DIRS}\n")

list(APPEND INCLUDE_DIRS
        ${CUDA_INCLUDE_DIRS}
        ${OpenCV_INCLUDE_DIRS}
        ${TensorRT_INCLUDE_DIRS}
	include
        )

list(APPEND ALL_LIBS
        ${CUDA_LIBRARIES}
        ${CUDA_LIB_DIR}
        ${OpenCV_LIBRARIES}
        ${TensorRT_LIBRARIES}
        )

include_directories(${INCLUDE_DIRS})

add_executable(${PROJECT_NAME}
        main.cpp
        include/yolov8.hpp
        include/common.hpp
        )

target_link_directories(${PROJECT_NAME} PUBLIC ${ALL_LIBS})
target_link_libraries(${PROJECT_NAME} PRIVATE nvinfer nvinfer_plugin cudart ${OpenCV_LIBS})

尝试把libcudart.lib路径放到ALL_LIBS中呢

@manfrey666
Copy link
Author

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

@triple-Mu
Copy link
Owner

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

你的cuda版本是多少呀?需要大于11.0才有这个api。
Linux下这个符号在 libcudart.so 里面。
Win我很少用来开发,所以不知是怎样的。

@manfrey666
Copy link
Author

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

你的cuda版本是多少呀?需要大于11.0才有这个api。 Linux下这个符号在 libcudart.so 里面。 Win我很少用来开发,所以不知是怎样的。

cuda版本是11.6,win下应该是cudart.lib,已经在ALL_LIBS中了。

@triple-Mu
Copy link
Owner

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

你的cuda版本是多少呀?需要大于11.0才有这个api。 Linux下这个符号在 libcudart.so 里面。 Win我很少用来开发,所以不知是怎样的。

cuda版本是11.6,win下应该是cudart.lib,已经在ALL_LIBS中了。

是把它所在的目录放在ALL_LIBS

@manfrey666
Copy link
Author

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

你的cuda版本是多少呀?需要大于11.0才有这个api。 Linux下这个符号在 libcudart.so 里面。 Win我很少用来开发,所以不知是怎样的。

cuda版本是11.6,win下应该是cudart.lib,已经在ALL_LIBS中了。

是把它所在的目录放在ALL_LIBS

set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")
list(APPEND ALL_LIBS
	${CUDA_DIR}/lib/x64
        ${CUDA_LIBRARIES}
        ${CUDA_LIB_DIR}
        ${OpenCV_LIBRARIES}
        ${TensorRT_LIBRARIES}
        )

是的。依然报错

@triple-Mu
Copy link
Owner

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

你的cuda版本是多少呀?需要大于11.0才有这个api。 Linux下这个符号在 libcudart.so 里面。 Win我很少用来开发,所以不知是怎样的。

cuda版本是11.6,win下应该是cudart.lib,已经在ALL_LIBS中了。

是把它所在的目录放在ALL_LIBS


set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")

list(APPEND ALL_LIBS

	${CUDA_DIR}/lib/x64

        ${CUDA_LIBRARIES}

        ${CUDA_LIB_DIR}

        ${OpenCV_LIBRARIES}

        ${TensorRT_LIBRARIES}

        )

是的。依然报错

这个符号就在这个lib里,剩下的只能靠你自己排查了。

@manfrey666
Copy link
Author

尝试把libcudart.lib路径放到ALL_LIBS中呢

似乎没有这个文件

你的cuda版本是多少呀?需要大于11.0才有这个api。 Linux下这个符号在 libcudart.so 里面。 Win我很少用来开发,所以不知是怎样的。

cuda版本是11.6,win下应该是cudart.lib,已经在ALL_LIBS中了。

是把它所在的目录放在ALL_LIBS


set(CUDA_DIR "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6")

list(APPEND ALL_LIBS

	${CUDA_DIR}/lib/x64

        ${CUDA_LIBRARIES}

        ${CUDA_LIB_DIR}

        ${OpenCV_LIBRARIES}

        ${TensorRT_LIBRARIES}

        )

是的。依然报错

这个符号就在这个lib里,剩下的只能靠你自己排查了。

好的,谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants