新建项目时“应用程序设置”里选择“导出符号”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 个无法解析的外部命令