您的位置:首页 > 运维架构

OpenCV 无法解析的外部符号 __imp_opj_image_destroy解决方案

2020-11-18 18:07 876 查看

场景

        编译OpenCvSharpExtern项目Debug x64动态库,出错提示如下:

1>opencv_imgcodecs440d.lib(loadsave.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_image_destroy,函数 "public: void __cdecl cv::detail::OpjImageDeleter::operator()(struct opj_image *)const " (??ROpjImageDeleter@detail@cv@@QEBAXPEAUopj_image@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2001: 无法解析的外部符号 __imp_opj_image_destroy
1>opencv_imgcodecs440d.lib(loadsave.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_destroy,函数 "public: void __cdecl cv::detail::OpjStreamDeleter::operator()(void * *)const " (??ROpjStreamDeleter@detail@cv@@QEBAXPEAPEAX@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2001: 无法解析的外部符号 __imp_opj_stream_destroy
1>opencv_imgcodecs440d.lib(loadsave.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_destroy_codec,函数 "public: void __cdecl cv::detail::OpjCodecDeleter::operator()(void * *)const " (??ROpjCodecDeleter@detail@cv@@QEBAXPEAPEAX@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2001: 无法解析的外部符号 __imp_opj_destroy_codec
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_image_create,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjEncoder::write(class cv::Mat const &,class std::vector<int,class std::allocator<int> > const &)" (?write@Jpeg2KOpjEncoder@cv@@UEAA_NAEBVMat@2@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_default_create,函数 "class std::unique_ptr<void *,struct cv::detail::OpjStreamDeleter> __cdecl cv::`anonymous namespace'::opjCreateBufferInputStream(struct cv::detail::OpjMemoryBuffer *)" (?opjCreateBufferInputStream@?A0x8b983c6d@cv@@YA?AV?$unique_ptr@PEAXUOpjStreamDeleter@detail@cv@@@std@@PEAUOpjMemoryBuffer@detail@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_set_read_function,函数 "class std::unique_ptr<void *,struct cv::detail::OpjStreamDeleter> __cdecl cv::`anonymous namespace'::opjCreateBufferInputStream(struct cv::detail::OpjMemoryBuffer *)" (?opjCreateBufferInputStream@?A0x8b983c6d@cv@@YA?AV?$unique_ptr@PEAXUOpjStreamDeleter@detail@cv@@@std@@PEAUOpjMemoryBuffer@detail@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_set_skip_function,函数 "class std::unique_ptr<void *,struct cv::detail::OpjStreamDeleter> __cdecl cv::`anonymous namespace'::opjCreateBufferInputStream(struct cv::detail::OpjMemoryBuffer *)" (?opjCreateBufferInputStream@?A0x8b983c6d@cv@@YA?AV?$unique_ptr@PEAXUOpjStreamDeleter@detail@cv@@@std@@PEAUOpjMemoryBuffer@detail@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_set_seek_function,函数 "class std::unique_ptr<void *,struct cv::detail::OpjStreamDeleter> __cdecl cv::`anonymous namespace'::opjCreateBufferInputStream(struct cv::detail::OpjMemoryBuffer *)" (?opjCreateBufferInputStream@?A0x8b983c6d@cv@@YA?AV?$unique_ptr@PEAXUOpjStreamDeleter@detail@cv@@@std@@PEAUOpjMemoryBuffer@detail@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_set_user_data,函数 "class std::unique_ptr<void *,struct cv::detail::OpjStreamDeleter> __cdecl cv::`anonymous namespace'::opjCreateBufferInputStream(struct cv::detail::OpjMemoryBuffer *)" (?opjCreateBufferInputStream@?A0x8b983c6d@cv@@YA?AV?$unique_ptr@PEAXUOpjStreamDeleter@detail@cv@@@std@@PEAUOpjMemoryBuffer@detail@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_set_user_data_length,函数 "class std::unique_ptr<void *,struct cv::detail::OpjStreamDeleter> __cdecl cv::`anonymous namespace'::opjCreateBufferInputStream(struct cv::detail::OpjMemoryBuffer *)" (?opjCreateBufferInputStream@?A0x8b983c6d@cv@@YA?AV?$unique_ptr@PEAXUOpjStreamDeleter@detail@cv@@@std@@PEAUOpjMemoryBuffer@detail@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_stream_create_default_file_stream,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjDecoder::readHeader(void)" (?readHeader@Jpeg2KOpjDecoder@cv@@UEAA_NXZ) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_set_warning_handler,函数 "void __cdecl cv::`anonymous namespace'::setupLogCallbacks(void * *)" (?setupLogCallbacks@?A0x8b983c6d@cv@@YAXPEAPEAX@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_set_error_handler,函数 "void __cdecl cv::`anonymous namespace'::setupLogCallbacks(void * *)" (?setupLogCallbacks@?A0x8b983c6d@cv@@YAXPEAPEAX@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_create_decompress,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjDecoder::readHeader(void)" (?readHeader@Jpeg2KOpjDecoder@cv@@UEAA_NXZ) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_set_default_decoder_parameters,函数 "struct opj_dparameters __cdecl cv::`anonymous namespace'::setupDecoderParameters(void)" (?setupDecoderParameters@?A0x8b983c6d@cv@@YA?AUopj_dparameters@@XZ) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_setup_decoder,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjDecoder::readHeader(void)" (?readHeader@Jpeg2KOpjDecoder@cv@@UEAA_NXZ) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_read_header,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjDecoder::readHeader(void)" (?readHeader@Jpeg2KOpjDecoder@cv@@UEAA_NXZ) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_decode,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjDecoder::readData(class cv::Mat &)" (?readData@Jpeg2KOpjDecoder@cv@@UEAA_NAEAVMat@2@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_create_compress,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjEncoder::write(class cv::Mat const &,class std::vector<int,class std::allocator<int> > const &)" (?write@Jpeg2KOpjEncoder@cv@@UEAA_NAEBVMat@2@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_set_default_encoder_parameters,函数 "struct opj_cparameters __cdecl cv::`anonymous namespace'::setupEncoderParameters(class std::vector<int,class std::allocator<int> > const &)" (?setupEncoderParameters@?A0x8b983c6d@cv@@YA?AUopj_cparameters@@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_setup_encoder,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjEncoder::write(class cv::Mat const &,class std::vector<int,class std::allocator<int> > const &)" (?write@Jpeg2KOpjEncoder@cv@@UEAA_NAEBVMat@2@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_start_compress,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjEncoder::write(class cv::Mat const &,class std::vector<int,class std::allocator<int> > const &)" (?write@Jpeg2KOpjEncoder@cv@@UEAA_NAEBVMat@2@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_end_compress,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjEncoder::write(class cv::Mat const &,class std::vector<int,class std::allocator<int> > const &)" (?write@Jpeg2KOpjEncoder@cv@@UEAA_NAEBVMat@2@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号
1>opencv_imgcodecs440d.lib(grfmt_jpeg2000_openjpeg.obj) : error LNK2019: 无法解析的外部符号 __imp_opj_encode,函数 "public: virtual bool __cdecl cv::Jpeg2KOpjEncoder::write(class cv::Mat const &,class std::vector<int,class std::allocator<int> > const &)" (?write@Jpeg2KOpjEncoder@cv@@UEAA_NAEBVMat@2@AEBV?$vector@HV?$allocator@H@std@@@std@@@Z) 中引用了该符号

解决方案

            通过CMake打开OpenCV的工程配置项,搜索WITH_OPENJPEG,然后去掉勾选WITH_OPENJPEG,重新生成解决方案,重新编译生成静态库opencv_imgcodecs440d.lib,然后在工程OpenCvSharpExtern中链接

尝试

        下载openjpeg-2.3.1源码,编译静态库,链接仍然失败

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐