ZLMediaKit/ZLToolKit

进程(调用Debug版版本库)退出时异常

dyzyrax opened this issue · 9 comments

看不出什么有效信息 代码git hash是多少?

ZLToolKit-master.zip
上面这个版本

采用Visual studio 2015,将ZLToolKit编译为动态库,进行调用动态库时出现上图异常。
注,采用静态库时,与项目的其他代码存在冲突,编译报错

这个异常是否与我的使用方法有关。我的使用方法:我在动态库sampled.dll中调用了静态库ZLToolKit,然后进程sampled.exe中调用了sampled.dll
我看到CMakeLists.txt中禁止将ZLToolKit编译为WIndows下的DLL,是什么原因呢?有无解决措施?

把zltoolkit编译成dll 建议还是c封装下比较好 因为c++的abi是不兼容的。
从你debug信息看 是ZLToolkit的socket被系统回收了或者被同进程代码关闭了 不得而知。

把zltoolkit编译成dll 建议还是c封装下比较好 因为c++的abi是不兼容的。
从你debug信息看 是ZLToolkit的socket被系统回收了或者被同进程代码关闭了 不得而知。

我尝试将test_tcpClient.cpp中的main函数改名并已C接口导出,运行正常,进程销毁时也存在异常。我分享下问题复现方式:

ZLToolKitDLL.zip
① 将附件压缩包解药至ZLToolKit-master目录
② ZLToolKit-master/CMakeLists.txt中尾部增加以下内容,将test_tcpClient示例功能封装为动态库ZLToolKitDLL.dll的接口ZLToolKitDLL_test,并在测试程序ZLToolKitDLL_test.cpp调用
# ZLToolKit动态库编译及调用
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
add_library(ZLToolKitDLL SHARED ${CMAKE_CURRENT_SOURCE_DIR}/ZLToolKitDLL/ZLToolKitDLL.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ZLToolKitDLL/ZLToolKitDLL.h)
if(ANDROID OR IOS OR WIN32)
target_link_libraries(ZLToolKitDLL ${PROJECT_NAME}_static ${LINK_LIB_LIST})
else()
target_link_libraries(ZLToolKitDLL ${PROJECT_NAME}_static ${LINK_LIB_LIST} pthread)
endif()

    add_executable(ZLToolKitDLL_test ${CMAKE_CURRENT_SOURCE_DIR}/ZLToolKitDLL/ZLToolKitDLL_test.cpp )
    target_link_libraries(ZLToolKitDLL_test ZLToolKitDLL)

③ 构建Visual Studio 2015 64位工程,编译测试程序ZLToolKitDLL_test,程序运行后,按‘esc’或'q'键退出,退出过程中就会报异常