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了,我去~编译居然也不报错。

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

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题