编译生成*.exe的时候 为什么会生成*.lib/*.exp

编译生成*.exe的同时生成*.lib/*.exp,项目里有导出的东西。

原因:查找项目中使用的函数是否具有__declspec(dllexport)语句

解决方法:自然是去掉_declspec(dllexport)

void _declspec(dllexport) test(); => extern "C" void test();

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,预处理指令是在编译之前执行的一些指令,这些指令以“#”开头。预处理指令用于定义宏、包含头文件、条件编译等。 在预处理阶段,C编译将源代码中的注释和预处理指令处理掉,生成一个新的源代码文件,这个文件编译成机器码。因此,C语言中的注释和预处理指令对最终的程序并没有任何影响。 在C语言中,注释有两种形式:单行注释和多行注释。 单行注释以“//”开头,表示该行后面的内容都是注释: ``` // 这是一行注释 int a = 10; // 这是另一行注释 ``` 多行注释以“/*”开头,“*/”结尾,表示中间的所有内容都是注释: ``` /* 这是一段 多行注释 */ int b = 20; /* 这是另一段 多行注释 */ ``` 在预处理阶段,注释被直接删除,不对程序产生任何影响。因此,我们可以在注释中写任何内容,包括预处理指令。 例如,我们可以在注释中写一个宏定义: ``` /* 定义一个宏 */ #define MAX(a, b) ((a) > (b) ? (a) : (b)) // 使用宏 int c = MAX(10, 20); // 展开后为 int c = ((10) > (20) ? (10) : (20)); ``` 同样地,我们也可以在注释中使用条件编译指令: ``` /* 定义一个宏 */ #define DEBUG // 检查是否定义了宏 #ifdef DEBUG printf("debug mode\n"); #endif ``` 总之,注释和预处理指令都只在预处理阶段起作用,不对最终的程序产生任何影响。因此,我们可以在注释中写任何内容,包括预处理指令。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值