Def文件和cpp文件编译

时间:2016-02-13 18:17:52

标签: c++ function dll compiler-errors

我正在尝试生成一个dll文件。 我有两个文件

DefFile.def
LIBRARY "square"
EXPORTS 
square

\

funct.cpp 
double __stdcall square(double & x)
{    
    return x*x; 
}

该项目的名称为square,它是Visual Studio 2015中的Dll项目。

当尝试单独编译funct.file时,它可以工作。但是在尝试编译项目时,我遇到了两个错误:

  

Erreur C2143 erreur de syntaxe:absence de';'前卫   'chaîne'quarec:\ users \ hasna \ desktop \ projet   vba -c ++ \ square \ square \ deffile.def 1

  

ErreurC4430spécificateurdetype manquant - int est pris en compte   pardéfaut。 Remarque:C ++ ne prend pas en charge int par   défautquarec:\ users \ hasna \ desktop \ projet   vba -c ++ \ square \ square \ deffile.def 1

谢谢大家

1 个答案:

答案 0 :(得分:0)

DEF文件语法在函数名称之前至少需要一个空格,例如

EXPORTS
    square

但是,DEF文件中的名称是函数的修饰名称(请参阅Decorated Names),在这种情况下类似于?square@@YGNAAN@Z

由于您使用VC ++,导出函数的最简单方法不是通过DEF文件,而是Exporting from a DLL Using __declspec(dllexport)

__declspec(dllexport) double __stdcall square(double & x);