s624721747
s624721747
采纳率0%
2015-08-13 02:49 阅读 1.9k

在VS中调用已存在的DLL,隐式链接和显示连接都编译不通过

新建一个Win32控制台应用程序,想在其中调用MyDll中的函数。
采用隐式配置方案时,出现MyDll.lib找不到,无法打开!!!
采用显示的#pragma comment(lib,"MyDll.lib")
#include
#pragma comment(lib,"G://My program\DynamicLibrary\Debug\__ltp_dll.lib")
//#include "__ltp_dll.h"
using namespace std;
//
declspec(dllimport) int CreateDOMFromString(const char *str);
int main()
{
CreateDOMFromString("ABCD");
return 0;
}
编译错误,提示,无法解析的外部符号 "
_declspec(dllimport) int __cdecl CreateDOMFromString(char const *)"

妹子已经弄了两天也没搞定,求各位大神帮忙

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • flyleaf0206 flyleaf0206 2015-08-13 03:01

    使用dumpbin工具查看mydll中这个函数是使用c格式的名称约定还是c++的,另外还要看调用约定是c还是stdcall,此外,mydll导出名称了没有,用dumpbin可以对lib文件做个确认,是否存在你要用的这个函数名称。

    点赞 评论 复制链接分享
  • oyljerry oyljerry 2015-08-13 05:49

    函数调用约定对吗,CreateDOMFromString
    是cdecl还是stdcall

    点赞 评论 复制链接分享
  • zuishikonghuan zuishikonghuan 2015-08-13 14:37

    1。调用约定,调用约定不同会使编译器使用不同的符号名修饰约定,造成无法连接
    2。因为C++有重载,因此函数符号名不符合修饰约定的标准,因此需要加extern "C"

    点赞 评论 复制链接分享

相关推荐