C++調用C#類庫生成的dll

C#類庫(.NET Framework)

新建項目——>Visual C# ——>類庫(.NET Framework)

C#類庫代碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Aliyun.Acs.Core;
using Aliyun.Acs.Core.Profile;
using Aliyun.Acs.Core.Exceptions;
using Aliyun.Acs.Core.Http;
using Newtonsoft.Json;


namespace AliyunSmsClassLibrary
{
    public class AliyunSms
    {
        string accessKeyId, secret;

        public AliyunSms(string accessKeyId, string secret)
        {
            this.accessKeyId = accessKeyId;
            this.secret = secret;
        }

        public void printAction()
        {
            Console.WriteLine("SendSms");
        }

        public string sendSms(string phoneNumber, string vehicleID, string Time, string location)
        { 
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, secret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            CommonRequest request = new CommonRequest();
            request.Method = MethodType.POST;
            request.Domain = "dysmsapi.aliyuncs.com";
            request.Version = "2017-05-25";
            request.Action = "SendSms";
            // request.Protocol = ProtocolType.HTTP;
            request.AddQueryParameters("PhoneNumbers", phoneNumber);
            request.AddQueryParameters("SignName", "中交華安");
            request.AddQueryParameters("TemplateCode", "SMS_177552111");
            request.AddQueryParameters("TemplateParam", JsonConvert.SerializeObject(new { vehicleID, Time, location }));
            try
            {
                CommonResponse response = client.GetCommonResponse(request);
                Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
                return System.Text.Encoding.Default.GetString(response.HttpResponse.Content);
            }
            catch (ServerException e)
            {
                Console.WriteLine(e);
                return e.Message;
            }
            catch (ClientException e)
            {
                Console.WriteLine(e);
                return e.Message;
            }
        }
    }
}


生成dll

在\bin\Debug\xx.dll
在這裏插入圖片描述

C++空項目

新建項目——>Visual C++ ——>空項目

公共語言運行時支持(/clr)

右鍵屬性——>常規——>項目默認值——>公共語言運行時支持(/clr)
在這裏插入圖片描述

拷貝dll

將生成的dll文件拷貝到Debug目錄下(如果是Release則拷貝到Release目錄下)

C++源碼

源文件——>添加——>新建項——>main.cpp

#include <string>
#include "assert.h"
#include <objbase.h>  
#include <stdio.h> 

#using "..\Debug\AliyunSmsClassLibrary.dll"

#pragma managed

using namespace AliyunSmsClassLibrary;


int main()
{
	AliyunSmsClassLibrary::AliyunSms^ aliyunSms = gcnew AliyunSmsClassLibrary::AliyunSms("xxxxxx", "xxxxxx");
	aliyunSms->printAction();
	aliyunSms->sendSms("181xxxxxxxx", "閩B666", "11月22日 17點22分", "廈門軟件園二期西門");
	return 0;
}

運行

運行 ok

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章