mfc调用dll出现无法解析的外部符号的问题

 时间:2024-10-04 05:31:23

通常我们在用mfc动态的调用dll时候经常会出现无法解镙龟陛鹜析的外部符号的问题。这也是比较令人头疼的问题。例如出现正在链接...Ima爿讥旌护ge3Doc.obj:errorLNK2019:无法解析的外部符号"public:__thiscallDib::Dib(void)"(??0Dib@@QAE@XZ)。出现这个问题的原因是什么呢?该怎么解决这个问题呢?

mfc调用dll出现无法解析的外部符号的问题

工具/原料

vs2010

电脑

方法/步骤

1、通常出现这个问题的原因有以下几个:1.没有导入相应的lib库文件。2.类成员声明了,但是却没有定义。也可能是定义的与声明的不一致。3.没有包含响应的头文件和源文件。4.没有在项目属性页的链接器的命令行选项加入相应的类包。5.没有在c++包含目录和库目录加入相应的类包路径。找到原因之后就可以对症下药了。

mfc调用dll出现无法解析的外部符号的问题

2、对于动态链接库dll来说有一个原则,如果是Debug生成的dll那么只能在debug模式下调用;同样,release生成的dll只能在release下应用,否则会出现提示缺少库的错误,导致程序崩溃。所以我们在调用库的时候一定要先清楚是怎么生成的,这是一个需要注意的问题。

mfc调用dll出现无法解析的外部符号的问题

3、而通常对于第三方的SDK一般只提供给我们DLL,并提供相应的头文件及LIB文件;这里的LI幞洼踉残B文件是链接时需要的,它包含了DLL中函数的橇秆苡螳想关信息,不是静态编译产生的静态库,因此我们只需要在项目添加对这些LIB的依赖。一般情况下按照项目--》属性--》配置属性--》链接器-》输入--》附加依赖项的方式在其中加入所需库文件,注意把库文件写进去,每个库文件后加分号,同时在“链接器--》常规--》附加库目录”中填入相应库所在目录。

mfc调用dll出现无法解析的外部符号的问题

4、还有一个需要注意的问题就是,通常需要把dll放在debug或者release的目录下,如果编译时提醒缺少哪个dll就将其放置在此目录下即可,否则会出现如下图的错误。

mfc调用dll出现无法解析的外部符号的问题

5、除此之外,还可以尝试着修改工程-属性-VC++目录的包含文件目录和库目录,将生成dll的工程的头文件和库文件都包含进去即可。有时候这对解决问题也是有帮助的。

mfc调用dll出现无法解析的外部符号的问题

6、最后一定要仔细检查一下引用的库文件,看看包含这些函数的文件是否加到工程文件中,也有可能是函数没有定义,而被引用了或者是工程中根本没有加入这些文件,都加入之后一般就没问题了。

mfc调用dll出现无法解析的外部符号的问题

【Mathematica入门】图像填充变换 IDEA代理抛出异常:1099端口占用 62056转换成16位二进制补码表示法 如何下载jdk1.6
热门搜索
报纸图片 日本黄漫画 艾滋病早期红斑图片 希望图片 银杏图片