guang_2010 2016-09-16 11:07 采纳率: 100%
浏览 2551
已采纳

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 2016-09-16 12:07
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记