complie dll但出现错误LNK2019

时间:2018-01-10 07:36:30

标签: c++ visual-studio dll

我用vs2013实现了一个C ++函数作为DLL。但我有链接器错误(错误LNK2019:函数___tmainCRTStartup中引用的未解析的外部符号_main)构建到dll。我有正确的设置,不知道有什么问题。代码很简单,但我不知道为什么它不能成功构建。

Demoone.h

#ifndef _Demo_H_
#define _Demo_H_
#ifdef LIBDLL
#define LIBDLL extern "C" _declspec(dllimport)
#else
#define LIBDLL extern "C" _declspec(dllexport)
#endif
LIBDLL int Add(int plus1, int plus2);
#endif

Demoone.cpp

#include "Demoone.h"
int Add(int a, int b)
{
    return (a + b);
}

更新

我将头文件修改为下面的

#ifndef _Demo_H_
#define _Demo_H_
extern "C" int Add (int a , int b);
#endif

并添加def文件

LIBRARY "Dllmaketwo"
EXPORTS
Add @ 1

同样的链接器错误(错误LNK2019:函数___tmainCRTStartup中引用的未解析的外部符号_main)也出现了。

2 个答案:

答案 0 :(得分:0)

如果要在使用DLL的项目中使用加载时链接,则需要链接DLL项目构建生成的.lib。

你可以这样做:

#pragma comment(lib, "dllproject.lib")

或者将.lib添加到Linker-> Input下项目设置中的其他依赖项行。您可能还需要在VC ++目录页面或Linker-> General页面中弄乱库搜索路径。

答案 1 :(得分:0)

#ifndef _Demo_H_
#define _Demo_H_
#ifdef LIBDLLIMPORT //Changed here
#define LIBDLL extern "C" _declspec(dllimport)
#else
#define LIBDLL extern "C" _declspec(dllexport)
#endif
LIBDLL int Add(int plus1, int plus2);
#endif

您不应在#ifdef#define

中使用相同的名称

您是否正确设置项目?你不应该在其中写一个`main()'函数。

enter image description here