我在写一个关于采集卡的程序,include了采集开开发包自带的头文件,链接了Lib,然后调用了相关函数,得到了视频信号并且成功的显示在了视频上……
BUT,当我准备对视频进行设置的时候,我发现很有些函数,在代码里面调用的时候,写的时候不报错(因为用的是 VS2012,写代码能够提示语法错误),但是编译的时候居然报错了:1>UltrasonicSystemDlg.obj : error LNK2019: 无法解析的外部符号 "long __cdecl DSStream_SaveToJpgFile(int,wchar_t const *,int)" (?DSStream_SaveToJpgFile@@YAJHPB_WH@Z),该符号在函数 "public: void __thiscall CUltrasonicSystemDlg::OnBnClickedButtonCapture(void)" (?OnBnClickedButtonCapture@CUltrasonicSystemDlg@@QAEXXZ) 中被引用
1>C:\Users\Administrator\Desktop\EndVersion\UltrasonicSystem\Debug\UltrasonicSystem.exe : fatal error LNK1120: 1 个无法解析的外部命令放在一般情况下,这个意思就应该是这个函数在DLL里面没有实现吧?但是这是工业成品的库,怎么会有这种情况呢,不止这一个函数,里面的很多函数都是这样的。搞的我刚把视频播放出来,调节不了了,无可奈何,跪求大神相助!
PS:头文件里面这些函数的声明都有,但是编译的时候报错了。不知道是不是版本问题,我用的是VS2012。这个库貌似是6.0里面用的。不过应该没有太大问题吧??DLL找不到函数VS2010 MFC采集卡求大神
BUT,当我准备对视频进行设置的时候,我发现很有些函数,在代码里面调用的时候,写的时候不报错(因为用的是 VS2012,写代码能够提示语法错误),但是编译的时候居然报错了:1>UltrasonicSystemDlg.obj : error LNK2019: 无法解析的外部符号 "long __cdecl DSStream_SaveToJpgFile(int,wchar_t const *,int)" (?DSStream_SaveToJpgFile@@YAJHPB_WH@Z),该符号在函数 "public: void __thiscall CUltrasonicSystemDlg::OnBnClickedButtonCapture(void)" (?OnBnClickedButtonCapture@CUltrasonicSystemDlg@@QAEXXZ) 中被引用
1>C:\Users\Administrator\Desktop\EndVersion\UltrasonicSystem\Debug\UltrasonicSystem.exe : fatal error LNK1120: 1 个无法解析的外部命令放在一般情况下,这个意思就应该是这个函数在DLL里面没有实现吧?但是这是工业成品的库,怎么会有这种情况呢,不止这一个函数,里面的很多函数都是这样的。搞的我刚把视频播放出来,调节不了了,无可奈何,跪求大神相助!
PS:头文件里面这些函数的声明都有,但是编译的时候报错了。不知道是不是版本问题,我用的是VS2012。这个库貌似是6.0里面用的。不过应该没有太大问题吧??DLL找不到函数VS2010 MFC采集卡求大神
按现象描述不应该是版本造成的函数不匹配,好象是函数定义和实现体不一致造成的
额,这貌似有点繁重啊,不过貌似最后还是调用的是厂家的库,如果直接调用不行,间接调用会不会也不行呢?唉,I will try it
这样的公司,这样的进度要求,走人算了。
不间的要和我一样,我的意思是试试别的配置类型
改了所有配置,发现还是不行,,被BOSS骂了……
这是Depends的依赖项,大神们可不可以帮忙分析一下?
VS-工具-VisualStudio命令提示:
dumpbin.exe /EXPORTS 你的lib路径和名字.lib
查看这个lib里有没有DSStream_SaveToJpgFile?
它的调用约定是不是__cdecl?
?DSStream_SaveToJpgFile@@YAJHPBDH@Z (long __cdecl DSStream_Sav
eToJpgFile(int,char const *,int))这是从这个工具里面弄出来的。大神,该怎么办呢?
extern “C”这个lib 和 dll 是不是 不对应 ?
?DSStream_SaveToJpgFile@@YAJHPBDH@Z (long __cdecl DSStream_Sav
eToJpgFile(int,char const *,int))这是从这个工具里面弄出来的。大神,该怎么办呢?仔细看就能找到错误原因了
编译器报错:
无法解析的外部符号 "long __cdecl DSStream_SaveToJpgFile(int,wchar_t const *,int)
查看LIB导出的函数原型为:
long __cdecl DSStream_Sav
eToJpgFile(int,char const *,int)看看,有什么区别,第二个参数,wchar_t const *和char const *。字符集问题。
你的.h头文件声明的是wchar_t const *,而实际上LIB导出的是char const *解决办法有两个:
1.修改你整个工程的字符集为多字节字符集,项目-XX属性-配置属性-常规-字符集-使用多字节字符集
2.修改.h头文件此函数的声明,第二个参数为char const *不行的话,另外把它提供给你的.h头文件里的DSStream_Sav
eToJpgFile函数的声明贴出来帮你看下。它是不是用了TCHAR还是它的.h有错
?DSStream_SaveToJpgFile@@YAJHPBDH@Z (long __cdecl DSStream_Sav
eToJpgFile(int,char const *,int))这是从这个工具里面弄出来的。大神,该怎么办呢?仔细看就能找到错误原因了
编译器报错:
无法解析的外部符号 "long __cdecl DSStream_SaveToJpgFile(int,wchar_t const *,int)
查看LIB导出的函数原型为:
long __cdecl DSStream_Sav
eToJpgFile(int,char const *,int)看看,有什么区别,第二个参数,wchar_t const *和char const *。字符集问题。
你的.h头文件声明的是wchar_t const *,而实际上LIB导出的是char const *解决办法有两个:
1.修改你整个工程的字符集为多字节字符集,项目-XX属性-配置属性-常规-字符集-使用多字节字符集
2.修改.h头文件此函数的声明,第二个参数为char const *不行的话,另外把它提供给你的.h头文件里的DSStream_Sav
eToJpgFile函数的声明贴出来帮你看下。它是不是用了TCHAR还是它的.h有错大神,按照解决办法的第一条中终于解决了问题,太感谢了,困扰了一个星期啊!!!!!!!!!!!!!!!!!!!!!!!!