C#の例C ++クラスライブラリの呼び出し

 

まず、ソリューションを作成し、FrameworkConsoleTestという名前の溶液中で.netframeworkプロジェクトを追加します。EncryptBaseという名前のC ++ダイナミックリンクライブラリDLLプロジェクトを追加します。

 

第二に、64ビットの世代の展開とC ++のプロジェクトEncryptBaseセット。(コンピュータがある場合、32ビットシステムがx86の配置されている、64ビットシステムがx64の配置されています)

 

 

第三に、「現在の選択」開始への解決策。

 

EncryptBaseのヘッダファイルで第四に、右は - 、新しいアイテムをEncryptBase.hのヘッダを追加 - 追加します。

1、次のコードを追加します。

#ifndefの_ENCRYPTBASE_H //重複した参照にヘッダファイルを防ぐために、_ENRYPTBASE_Hマクロを定義し
ます。#define _ENCRYPTBASE_H 

の#ifdef __cplusplus //この部分は、あなたがある、CPPファイルであれば、(__cplusplusを定義する場合、コンパイラに指示することである
にextern「C」 {デフォルトで定義されたマクロため// CPPファイル)、次いでコンパイルするC言語を使用して
#ENDIF 


の#ifdef DLL_EXPORTS   
の#define DLL_EXPORTS __declspec(DLLEXPORT)    
の#else   
の#define DLL_EXPORTS __declspec(DLLIMPORT)    
#endifの   
    
    DLL_EXPORTS INT和(INT値1、値2 INT); 

__cplusplusの#ifdef 
} 
#endifの


#endifの// _ENCRYPTBASE_H!

  

2、添加后如图所示:

 

五、在FrameworkConsoleTest项目的Program修改为以下代码。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace FrameworkConsoleTest
{
    class Program
    {
        [DllImport("EncryptBase.dll", CallingConvention = CallingConvention.Cdecl)]
        static extern int Sum(int value1, int value2);

        static void Main(string[] args)
        {
            int sumValue = Sum(1, 2);
            Console.WriteLine("sumValue:"+sumValue);
        }
    }
}

修改后如图所示:

 

六、在EncryptBase项目,右键--属性--生成事件--生成后事件--命令行--编辑。设置生成后事件之后,编辑EncryptBase项目就不用每次将bin的dll复制到FrameworkConsoleTest项目了。

 

 

2、输入以下内容:

copy "$(OutputPath)$(TargetFileName)" "E:\Project\ArticleProject\AuthorizationTest\FrameworkConsoleTest\bin\Debug"
copy "$(OutputPath)EncryptBase.pdb" "E:\Project\ArticleProject\AuthorizationTest\FrameworkConsoleTest\bin\Debug"

 

3、设置后如下所示:

 

4、生成EncryptBase项目。

 

六、在FrameworkConsoleTest,右键属性--生成--取消勾选"首选32位"。

 

七、运行。

在FrameworkConsoleTest项目,组合按Ctrl+F5,可显示调用结果。如下图所示。

 

八、文件已上传,可点击下载。

https://files.cnblogs.com/files/suterfo/AuthorizationTest(Demo1).rar

 

おすすめ

転載: www.cnblogs.com/suterfo/p/12291129.html