将错误与图形魔术链接
Link errors with GraphicsMagick
我下载并编译了GraphicsMagick,1.3.23,Q16,x64,StaticMT版本。我不得不将GraphicsMagick的构建实用程序生成的Visual Studio 7解决方案转换为Visual Studio 2015格式。我将我的项目链接到CORE_DB_magick_.lib和CORE_DB_Magick++_.lib。
当链接器运行时,它在链接 InitializeMagick(( 和 DestroyMagick(( 时产生未解析的外部符号
1>wtd.lib(WebController.obj(:错误LNK2019:__imp_DestroyMagick函数"public: __cdecl Wt::WebController::~WebController(void("(??1WebController@Wt@@QEAA@XZ(1>wtd.lib(WebController.obj( : 错误 LNK2019: __imp_InitializeMagick函数"public: __cdecl Wt::WebController::WebController(class Wt::WServer &,class std::basic_string,class std::allocator> const &,bool("(??0WebController@Wt@@QEAA@AEAVWServer@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z(
我不明白为什么符号没有链接。有什么想法吗?
显然,GraphicsMagick Static 版本无法正确链接。
您的项目类型是什么?在尝试将GraphicsMagick库链接到DLL时,我遇到了类似的问题。
这里的线索是,__imp是 DLL 导入的函数修饰,因此您正在尝试与 DLL 函数链接。
问题在于,标头magick/common.h在链接到DLL项目时,会读取Visual Studio预处理器环境的当前配置,以确定库处于哪种模式,例如,如果您尝试将静态库链接到DLL,这显然是错误的。在本例中,它将 MagickExport 定义为 __declspec(dllimport(。
AFAIK 这是库中的一个错误。为了获得适当的静态构建支持,magick/common.h 需要执行一些操作,例如从 magick/magick_config.h 读取信息,以确定库实际构建的模式并适当地定义 MagickExport。
由于您的库是静态链接的,因此您可以通过注释掉定义中的所有内容来解决此问题:
#if defined(MSWINDOWS) && !defined(__CYGWIN__)
并将其替换为:
#define MagickExport
#define ModuleExport
#define MagickGlobal
相关文章:
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- CMake-按正确顺序将项目与C运行时对象文件链接
- 从链接列表c++中删除一个项目
- 有根的二进制搜索树.保留与其父级的链接
- 读取文件的最后一行并输入到链接列表时出错
- 静态数据成员的问题-修复链接错误会导致编译器错误
- node-gyp 在 macOS 上未正确链接库
- 基于boost的程序的静态链接——zlib问题
- 无法链接 CMake 中的本地库
- 内联函数中具有内部链接的全局变量
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 使用gcc从静态链接的文件中查找可选符号
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 下面是我为检测链接列表中的循环而制作的代码
- 有了gcc,是否可以链接库,但前提是它存在
- 使用C链接在函数内部创建C++模板
- Visual Studio mkl_link_tool.exe链接错误
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- 将错误与图形魔术链接