c# 引用c语言dll文件,C#直接使用DllImport调用C/C++动态库(dll文件)

1.C/C++动态库的编写 下面是我编写的一个比较简单的C++dll文件用来测试,关于如何编写dll文件,我这里便不再赘述,不懂得自行查询, (1).h文件

1.C/C++动态库的编写

下面是我编写的一个比较简单的C++dll文件用来测试,关于如何编写dll文件,我这里便不再赘述,不懂得自行查询,

(1).h文件

#ifdef MYDLL_EXPORTS

#define MYDLL_API __declspec(dllexport)

#else

#define MYDLL_API __declspec(dllimport)

#endif//求两个整数的和(普通类型的参数)

extern "C" MYDLL_API int GetSum(int nNum1, int nNum2);

//获取两个整数中的最大值(含有整数类型的指针为参数)

extern "C" MYDLL_API int GetMaxValue(int *pValue1, int* pValue2);

//获取两个整数中的最小值,最小值以传出参数获取

extern "C" MYDLL_API void GetMinValue(int *pValue1, int* pValue2, int *pMinValue);

//带有char[]与char*参数

extern "C" MYDLL_API int GetLength(char szName[], char* szBirth);

(2).cpp文件

//求两个整数的和(普通类型的参数)

extern "C" MYDLL_API int GetSum(int nNum1, int nNum2)

{

return (nNum1 + nNum2);

}

//获取整个整数中的最大值

extern "C" MYDLL_API int GetMaxValue(int *pValue1, int* pValue2)

{

return (*pValue1 > *pValue2) ? *pValue1 : *pValue2;

}

//获取两个整数中的最小值,最小值以传出参数获取

extern "C" MYDLL_API void GetMinValue(int *pValue1, int* pValue2, int *pMinValue)

{

if (*pValue1 < *pValue2)

{

*pMinValue = *pValue1;

}

else

{

*pMinValue = *pValue2;

}

}

//带有char[]与char*参数

extern "C" MYDLL_API int GetLength(char szName[], char* szBirth)

{