我正在使用CMake在Windows上构建一个DLL的c++项目。然后我希望使用SWIG为python包装这个,但是这样做时,我收到了关于“不一致的DLL链接”的警告。我想这是因为dllexport/dllimport用法不正确,我需要为SWIG指定一个定义?我在CMake怎么做?在
我的C++库是在CMake中构建的:
# glob all the sources
file(GLOB SOURCES "src/core/*.cpp")
add_library(galgcore SHARED ${SOURCES})
target_link_libraries(galgcore ${GDAL_LIBRARY})
GENERATE_EXPORT_HEADER( galgcore
BASE_NAME GeoAlg
EXPORT_MACRO_NAME GALGCORE_DLL
EXPORT_FILE_NAME ${PROJECT_SOURCE_DIR}/src/core/core_exp.h
STATIC_DEFINE GeoAlg_BUILT_AS_STATIC
)
(它正在使用CMAke生成导出头)。在
我使用这个库来构建一个运行良好的测试可执行文件:
^{pr2}$最后,关于swig的部分:
### SWIG
# This generates the python bindings
find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})
find_package(PythonLibs)
include_directories(${PYTHON_INCLUDE_PATH})
set(CMAKE_SWIG_FLAGS "-Wall")
set_source_files_properties("${PROJECT_SOURCE_DIR}/python/galg.i" PROPERTIES CPLUSPLUS ON)
set_property(SOURCE "${PROJECT_SOURCE_DIR}/python/galg.i" PROPERTY SWIG_FLAGS "-builtin")
SWIG_ADD_MODULE(galg python "${PROJECT_SOURCE_DIR}/python/galg.i" ${SOURCES})
SWIG_LINK_LIBRARIES(galg ${PYTHON_LIBRARIES} galgcore)
下面是我如何避免在Windows上出现警告的完整方法:
相关问题 更多 >
编程相关推荐