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
上传中...
上传图片
插入图片