1.类的函数的内联实现#include "stdafx.h"#include "testdll.h"#include#include "testdll.h"using namespace std;#ifndef TestDll_H_ #define TestDll_H_ #pragma once #define DLL_EXPORTS #ifdef DLL_EXPORTS //#define DLL_API extern "C" __declspec(dllexport) #define DLL_CLASS __declspec(dllexport) #else /*#define DLL_API extern "C" __declspec(dllimport) */ #define DLL_CLASS __declspec(dllimport) #endif #include //DLL_CLASS是关键字不可缺省 class DLL_CLASS MyOGRE1 { public: void MyOGREHello() { std::cout << "Hello MyOGRE_Hello()" <<"NIMEI"<< std::endl; } };#endif 2.函数的声明与实现分开.h文件using namespace std;#ifndef TestDll_H_ #define TestDll_H_ #pragma once #define DLL_EXPORTS #ifdef DLL_EXPORTS //#define DLL_API extern "C" __declspec(dllexport) #define DLL_CLASS __declspec(dllexport) #else /*#define DLL_API extern "C" __declspec(dllimport) */#define DLL_CLASS __declspec(dllimport) #endif class DLL_CLASS MyOGRE1{public:void MyOGREHello();};#endif cpp文件#include "stdafx.h"#include "testdll.h"#include #include "testdll.h"using namespace std;void MyOGRE1::MyOGREHello(){cout << "66666" << endl;}c#代码using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication17{ [StructLayout(LayoutKind.Sequential)] public class MyOGRE { //该方式是直接调用C++ DLL内的类的成员函数。 QAEXXZ [DllImport("MyDLL.dll", EntryPoint = "?MyOGREHello@MyOGRE1@@QAEXXZ")] public static extern void MyOGREHello(); } class Program { #region 1 static void Main(string[] args) { MyOGRE.MyOGREHello(); Console.ReadKey(); } #endregion }}