C#与C++的混合编程 之三 C++与C#的数据传递与类型转换
一、数据传递方法
1.基本数据类型的传递
函数参数和返回值可以是C#和C++的各种基本数据类型,如int, float, double, char(注意不是char*)等。
示例:
C#代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
using
System;
using
System.Text;
using
System.Runtime.InteropServices;
class
Program
{
[DllImport(
@"E:\Projects\testdll\debug\testdll.dll"
)]
public
static
extern
int
testfunc(
int
a,
float
b,
double
c,
char
d);
static
void
Main(
string
[] args)
{
int
a = 1;
float
b = 12;
double
c = 12.34;
char
d =
'A'
;
testfunc(a,b,c,d);
Console.ReadKey();
}
}
|
C++代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
<pre
class
=
"brush:cpp"
>#include <iostream>
using
namespace
std;
extern
"C"
{
_declspec(
dllexport
)
int
__stdcall testfunc(
int
a,
float
b,
double
c,
char
d)
{
cout<<a<<
", "
<<b<<
", "
<<c<<
", "
<<d<<endl;
return
0;
}
}
</pre>
|
2.向DLL传入字符串
C#中使用string定义字符串,将字符串对象名传给DLL。
注意:在DLL中更改字符串的值,C#中的值也会改变。
缺点:无法改变字符串的长度,建议使用第3种方法。
C#代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using
System;
using
System.Text;
using
System.Runtime.InteropServices;
class
Program
{
[DllImport(
@"E:\Projects\testdll\debug\testdll.dll"
)]
|