error LNK2019: unresolved external symbol "__declspec(dllimport)

aoyihuashao 2009-12-16 12:04:56
error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl skinppLoadSkin(wchar_t *,int)" (__imp_?skinppLoadSkin@@YAHPA_WH@Z) referenced in function "public: virtual int __thiscall CRFMSApp::InitInstance(void)" (?InitInstance@CRFMSApp@@UAEHXZ)

怎么办?
...全文
2375 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianzhu_1 2012-05-08
  • 打赏
  • 举报
回复
我跟楼主遇到同样的问题,不过我用的是VS2010,只是将字符集设置为no set
tianzhu_1 2012-05-08
  • 打赏
  • 举报
回复
楼主可以讲字符集设置为no set,这样就可以运行了
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
http://www.cnblogs.com/phinecos/archive/2008/04/14/1152696.html

==

这里说,是因为用了UNICODE编码,可如果改成了多字节编码,那我其他地方又不行了。
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dingnifei123 的回复:]
出现这种错误,建议看看下面几个选项:
(VS2005)
1、Project1 Properties -->Conifiguration Properties -->General --> Character Set;
2、Project1 Properties -->Conifiguration Properties -->C/C++
  -->Preconpiled Headers-->Create/User preconpiled Header
[/Quote]

1、unicode字符集
2、使用预编译头(/Yu)
M_S_D_N 2009-12-16
  • 打赏
  • 举报
回复
如果是这种情况,最好是在VS2008环境中重编skin++代码,因为VS2008中对C++函数的包装跟VC6不一样。

[Quote=引用 4 楼 aoyihuashao 的回复:]
引用 3 楼 a746027209 的回复:
你dll导出函数没有被设为导出在dll要导出的函数前加上__declspec(dllexport)


是skin++的dll。

在vc6下面是好的,可在VS2005里面这样了。
[/Quote]
wfx_net 2009-12-16
  • 打赏
  • 举报
回复
用VC6生成的LIB在VC6下用是正常的,却不能在Vs2005中使用。
你应该用VS2005再生成一个LIB。
如果是DLL的导出涵数是C的话,你可以用动态加载DLL的方式
Dingnifei123 2009-12-16
  • 打赏
  • 举报
回复
出现这种错误,建议看看下面几个选项:
(VS2005)
1、Project1 Properties -->Conifiguration Properties -->General --> Character Set;
2、Project1 Properties -->Conifiguration Properties -->C/C++
-->Preconpiled Headers-->Create/User preconpiled Header
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a746027209 的回复:]
你dll导出函数没有被设为导出在dll要导出的函数前加上__declspec(dllexport)
[/Quote]

是skin++的dll。

在vc6下面是好的,可在VS2005里面这样了。
a746027209 2009-12-16
  • 打赏
  • 举报
回复
你dll导出函数没有被设为导出在dll要导出的函数前加上__declspec(dllexport)
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
加载了。
M_S_D_N 2009-12-16
  • 打赏
  • 举报
回复
没加载lib文件。。。
zealand_1 2009-12-16
  • 打赏
  • 举报
回复
楼上的方法貌似不行
wildwise 2009-12-16
  • 打赏
  • 举报
回复
lz可以清除工程,然后全部重新编译一下,我以前遇到过,重编译就通过了,不妨可以试试
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
郁闷的是这个版本自有3个风格可以用。
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
看来还是只能用skin++ 0.1.3了。。。
M_S_D_N 2009-12-16
  • 打赏
  • 举报
回复
所以把工程改成MBCS是治标不治本的做法。

如果想在UNICODE工程中用,再不考虑其他因素,楼主可以自己对skin++封装一层。

[Quote=引用 13 楼 aoyihuashao 的回复:]
注:关于SKIN++在VS2005中的使用。需要注意的几点是,SKIN++免费版是只支持ANSI的,但VS2005默认情况下编码为UNICODE,如果在编译链接时不把编码改为ANSI则无法正常生成。
[/Quote]
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
注:关于SKIN++在VS2005中的使用。需要注意的几点是,SKIN++免费版是只支持ANSI的,但VS2005默认情况下编码为UNICODE,如果在编译链接时不把编码改为ANSI则无法正常生成。
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 m_s_d_n 的回复:]
这文章纯属菜鸟之作。。。

wchar_t和char,不同类型的函数参数,自然导致最后生成的函数名称不一致。

引用 9 楼 aoyihuashao 的回复:
http://www.cnblogs.com/phinecos/archive/2008/04/14/1152696.html

==

这里说,是因为用了UNICODE编码,可如果改成了多字节编码,那我其他地方又不行了。

[/Quote]

不只他一个人那样写,刚搜了很多都说是VS2005的unicode不能用的。
aoyihuashao 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 m_s_d_n 的回复:]
如果是这种情况,最好是在VS2008环境中重编skin++代码,因为VS2008中对C++函数的包装跟VC6不一样。

引用 4 楼 aoyihuashao 的回复:
引用 3 楼 a746027209 的回复:
你dll导出函数没有被设为导出在dll要导出的函数前加上__declspec(dllexport)


是skin++的dll。

在vc6下面是好的,可在VS2005里面这样了。

[/Quote]

没源码。没法重编。
M_S_D_N 2009-12-16
  • 打赏
  • 举报
回复
这文章纯属菜鸟之作。。。

wchar_t和char,不同类型的函数参数,自然导致最后生成的函数名称不一致。

[Quote=引用 9 楼 aoyihuashao 的回复:]
http://www.cnblogs.com/phinecos/archive/2008/04/14/1152696.html

==

这里说,是因为用了UNICODE编码,可如果改成了多字节编码,那我其他地方又不行了。
[/Quote]

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧