C#調用PB寫的com組件dll


背景

小編為了使用C#去模仿PB代碼的加密算法,結果發現PB算法中,的long類型只有21億,實際上傳入的數值達到了78億,造成了數據溢出,精度丟失的情況。

然而PB的算法已經使用C#不可以還原(C#的long類型比PB的long類型大多了)。想到是否可以使用C#去調用PB的加密,經過一番波折終於成功了。

先來一張最終效果圖

C#

PB:

步驟

首先得PB去生成COM組件

1、新建一個工作空間

 

2、新建一個COM組件

各種下一步

 

 

 

 3、然后完成后,點擊函數列表,右鍵add添加函數

 

 

add函數代碼就一句

 

 

 4、然后代碼完成后,生成dll

 5、生成后如下圖

 

 

 

注冊PB控件

1、按win+r調出運行

 

2、輸入cmd回車調出cmd命令窗體

 

 

3、使用regsvr32 你的路徑\genapp.dll

 

 

C#添加並調用pb的com組件

 1、回到C#的ide,右鍵添加引用

 如下圖選擇左邊的com,注冊成功后,PB寫的com組件會顯示在里面

選擇genapp.dll,添加

 

 2、項目屬性的目標平台設置成x86

3、C#代碼如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using genapp;
namespace callPBdll
{
    public partial class Form1 : Form
    {
        [DllImport(@"genapp.dll", CharSet = CharSet.Ansi)]
        public static extern long add(long num1, long num2);
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        private void button1_Click(object sender, EventArgs e)
        {

            genapp.COClass_n_genappClass a = new COClass_n_genappClass();
            MessageBox.Show(a.add(int.Parse(txtNum1.Text), int.Parse(txtNum2.Text)).ToString());

        }

        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(callPBEncrypt.Bridge.Encrypt("1"));
        }
    }
}

4、OK啦

 

5、祝各位女生節快樂,預祝婦女節快樂(/(ㄒoㄒ)/~~可惜明天沒有假)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM