c# Task.Factory.StartNew 传参数_C#/C++混合编程一二事

C#/C++混编的情形经常会碰到,下面就来讲一讲一些需要注意的点。废话不多说,Let's get started. (时间有限,暂时没有写完,后续会持续更细。如果有写的不严谨甚至错误的地方欢迎大家指正)

一、C++导出函数的声明

在导出函数的头文件,经常见到如下的模板

#pragma once

下面就来给出解释。

  • #ifdef __cplusplus这条预编译指令。如果项目是C++的项目,则用extern "C" {} 将所有的代码包起来。这样的好处是导出的函数名仍和代码中定义的一致,否则函数名前后会加上一些看起来很奇怪的符号。这是因为C++的函数有重载机制,同一个函数名,可以有多种参数形式,不加extern "C"包起来的话,编译器就会在函数名前后加上一些符号,来具体到这个函数的具体的某一种形式。
  • #ifdef YOURPROJECT_EXPORTS这条预编译指令。这段话的意思就是如果定义了YOURPROJECT_EXPORTS这个宏,则把YOURPROJECT_API这个宏定义成__declspec(dllexport),否则把YOURPROJECT_API定义成__declspec(dllimport)。这个设计是为了开发者和调用者的便利性设计的。因为这个头文件,后来也会拷贝给调用者用,开发者的导出函数的这个项目中定义一个宏YOURPROJECT_EXPORTS,而调用者那边没有这个宏。所以YOURPROJECT_API对于开发者就是__declspec(dllexport),对于调用者就是__declspec(dllimpo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值