2 guang 2010 guang_2010 于 2016.09.16 19:07 提问

VS2013新建DLL项目,随便导出一个函数,引用时提示error LINK2019,找不到该函数

新建项目时“应用程序设置”里选择“导出符号”vs会自己导出一个变量和一个函数,我在另一个工程里引用VS导出的变量和函数都没有问题。
引用我自己导出的那个函数就是不行???

//头文件:ConsoleApplication1.h

#ifdef CONSOLEAPPLICATION1_EXPORTS
#define CONSOLEAPPLICATION1_API __declspec(dllexport)
#else
#define CONSOLEAPPLICATION1_API __declspec(dllimport)
#endif
//这是VS自己导出的函数声明
CONSOLEAPPLICATION1_API    int    fnConsoleApplication1(void);
//这是我的导出函数声明
CONSOLEAPPLICATION1_API    int    fnAddTwo(int a,int b);

//CPP文件:ConsoleApplication1.cpp

// 这是VS导出示例函数的实现。调用这个函数没有问题
CONSOLEAPPLICATION1_API  int    fnConsoleApplication1(void)
{
    return 42;
}
//这是我导出函数的实现,调用提示无法解析符号
CONSOLEAPPLICATION1_API    int    fnAddTow(int a, int b) 
{
    return a + b;
}
//END 

然后我自己新建一个空白工程:

 #include "ConsoleApplication1.h"     //已加入工程目录
#pragma comment(lib,"ConsoleApplication1.lib")   //这个也加入库目录
#include <iostream>
int main() {
    int a = 1, b = 2;
        //调用我导出的函数,提示链接错误,注释掉就链接成功
    std::cout << "fnAddTwo(1, 2) = " << fnAddTwo(a, b) << std::endl;
        //调用VS自己导出的函数没问题
    std::cout << fnConsoleApplication1() << std::endl;
    return 0;
}
//END

错误提示:
1>main.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) int cdecl fnAddTwo(int,int)" (imp_?fnAddTwo@@YAHHH@Z),该符号在函数 _main 中被引用
1>e:\my documents\visual studio 2013\Projects\Project1\Debug\Project1.exe : fatal error LNK1120: 1 个无法解析的外部命令

1个回答

guang_2010
guang_2010   2016.09.16 20:07
已采纳

哎,写代码不细心害死人,函数声明时写成fnAddTwo,而在实现时函数名就是fnAddTow了,我去~编译居然也不报错。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
函数导出方式不对,导致的“error link2019 无法解析的外部符号 ”
一般情况下,
dll 导出的类遇到 error LNK2019 的解决方法
今天在VS2010环境下写了一个测试程序用来测试类的导出,DLL头文件如下: #if defined(CHAPTER2LIBRARY_EXPORT) // inside DLL #   define CHAPTER2API   __declspec(dllexport) #else // outside DLL #   define CHAPTER2API   __declspec
C++:常见错误LNK2019的几种原因
转自:https://www.cnblogs.com/thisway/p/5497200.htmlerror LNK2019问题在VC 6.0中是error LNK2001: unresolved external symbol问题,可能错误号改了。编译时出现类似这样的错误:Dlgcode.obj : error LNK2019: 无法解析的外部符号 _readRegmark,该符号在函数 _Ab...
无法装载DLL Microsoft提示请误随意操作SQL数据库,以免对数据库造成不必要的麻烦或DLL所引用的某一DLL。原因:126(找不到指定模块)
之前曾经遇到过这个问题,但都是卸载后再重新安装解决的;今天查了半天资料,走运的把这个问题解决了;这种情况由于SQL2000的SA密码过于简单导致,被病毒恶意修改系统存储过程(master里面的扩展存储过程)在这次情况发生后,我查到master里面的扩展存储过程中有sp_OACreate,xp_dirtree,xp_regwrite这几个存储过程中的路径名都是乱码,于是把这几个存储过程过都删除drop procedure xp_ dropextendedproc........然后再执行这几个存储过程e
vs2010 error link2019无法解析的外部符号
vs2010 error link2019无法解析的外部符号 一、动机 自己写的Dll库,然后对其进行引用,出现了题中所示的错误。使用了以下步骤的解决办法。 1、引入dll的头文件:属性-》c/c++-》常规-》附加包含目录,在框中加入dll的头文件 2、引入lib库目录:属性-》链接器-》常规-》附加库目录,在框中加入生成dll对应的lib库目录(注意这里加入的是文件目录) 3、引
error LNK2019: 无法解析的外部符号 _main ,该符号在函数 _mainCRTStartup 中被引用
我遇到的问题: GameClient warning LNK4098: 默认库“msvcrtd.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library GameClient error LNK2005: ___xi_z 已经在 msvcrtd.lib(cinitexe.obj) 中定义 GameClient error LNK2005: __amsg_exit 已经在
Qt下Link2019,Link2001错误的解决
main.obj:-1: error: LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QSqlDatabase::~QSqlDatabase(void)" (__imp_??1QSqlDatabase@@QAE@XZ),该符号在函数 __catch$_main$0 中被引用 main.obj:-1: error: LNK
VS2013动态库dll的创建和生成,以及调用
VS2013动态库dll的创建和生成,以及调用
无法解析的外部符号 dll中的函数不能识别
背景: workStation中提供了CUserConfig类中的方法给Trade.dll使用。在编译Trade.dll的时候,出现CUserConfig类中的多个方法无法识别。 原因: WorkStation编译的是debug版本的。 而Trade.dll编译的是Release版本的。 解决方法: Trade.dll应该编译的是debug版本的。解
VS LNK2019 解决办法之一
LNK2019: unresolved external symbol _main referenced in function __main 有人说这是因为静态动态引用引起的,但是!这些都没有解决我的问题 我用VS 2012 里新建的工程编译时遇到了这个错误,后来我发现:虽然代码里#include了我写的.h文件,但是还要手动添加到工程里,向下图这样,将自己写的.h文件和.c