VS2010中的Magick ++ - 未解析的外部符号 [英] Magick++ in VS2010 - unresolved external symbol

查看:669
本文介绍了VS2010中的Magick ++ - 未解析的外部符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将ImageMagick Magick ++用于VS2010中的C ++项目。
我从这里安装了图书馆: klick

I'm trying to use ImageMagick Magick++ for a C++ Project in VS2010. I installed the Library from here: klick

然后在我的项目中,我将c:/ program files / ImageMagick-6.6.6-Q16 / include添加到include文件夹中。然后我尝试将Magick ++与此代码一起使用:

Then in my Project, I added c:/program files/ImageMagick-6.6.6-Q16/include to the include folders. Then I tried to use Magick++ with this code:

#include <Magick++.h>
void main(int argc, char ** argv){
    InitializeMagick(*argv);
}

但这不起作用!
VS2010返回以下错误:

But this does not work! VS2010 returns the following errors:

error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl    Magick::InitializeMagick(char const *)" (__imp_?InitializeMagick@Magick@@YAXPBD@Z)
error LNK1120: 1 unresolved externals

我做错了什么?

非常感谢你的帮助!

更新:

将链接器 - >输入 - >附加依赖关系设置为:

Set Linker -> Input -> Additionnal Dependencies to:

kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;CORE_RL_Magick++_.lib

和链接器 - >常规 - >附加图书馆目录:

And Linker -> General -> Additionnal Library Directories to:

C:\Program Files\ImageMagick-6.6.6-Q16\lib

它仍会导致相同的错误......

It still results in the same error...

更新2

在C:\Program Files \ ImageMagick-6.6.6-Q16 \lib中打开.lib文件会导致此错误:

Opening the .lib files in C:\Program Files\ImageMagick-6.6.6-Q16\lib results in this error:

更新3

CORE_RL_Magick ++ _。lib确实包含?InitializeMagick @ Magick @@ YAXPEBD @ Z,但不是吗?InitializeMagick @ Magick @@ YAXPBD @ Z.这是否意味着.lib文件已损坏?

CORE_RL_Magick++_.lib does contain ?InitializeMagick@Magick@@YAXPEBD@Z, but not ?InitializeMagick@Magick@@YAXPBD@Z. Does this mean the .lib file is corrupted?

更新4

I通过手动编译.lib文件解决了我的问题。
感谢所有人!

I solved my problem by manually compliling the .lib files. Thanks to all!

推荐答案


CORE_RL_Magick ++ _。lib确实包含?InitializeMagick @ Magick @@ YAXPEBD @ Z,但不是吗?InitializeMagick @ Magick @@ YAXPBD @ Z

CORE_RL_Magick++_.lib does contain ?InitializeMagick@Magick@@YAXPEBD@Z, but not ?InitializeMagick@Magick@@YAXPBD@Z

使用undname.exe实用程序,这些名称undecorate为:

Using the undname.exe utility, these names undecorate to:

void __cdecl Magick::InitializeMagick(char const *)
void __cdecl Magick::InitializeMagick(char const * __ptr64)

注意你在参数上得到的__ptr64声明符。你有一些编译设置将char *转换为64位指针。就像编译针对64位操作系统的代码一样。但是链接32位.lib。这通常会生成关于.lib的位错误的链接器错误,不能确定为什么你看不到这个错误。也许是一个mingw神器,不知道它是如何工作的。

Note the __ptr64 declarator you got on the argument. You've got some kind of compile setting that turns that char* into a 64-bit pointer. Like compiling this code targeting a 64-bit operating system. But linking the 32-bit .lib. This normally generates a linker error about the bit-ness of the .lib being wrong, not so sure why you don't see this. Maybe a mingw artifact, not sure how it works.

这篇关于VS2010中的Magick ++ - 未解析的外部符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆