dll文件的c++制作dll文件的c++制作

dll文件的c++制作
1、首先用vs2005建立一個c++的dll動態鏈接文件,這時,
// DllTest.cpp : 定義 DLL 應用程序的入口點。
//

#include "stdafx.h"
//#include "DllTest.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
?????????????????????? DWORD??ul_reason_for_call,
?????????????????????? LPVOID lpReserved
?????????? )
{
????return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif
這段代碼會自動生成,
2、自己建一個DllTest.h的頭文件,和DllTest.def的塊聲明文件。
其中頭文件是為了聲明內部函數使用。塊聲明主要是為了在dll編譯成功后固定好方法名。別忘記添加#include "DllTest.h"
3、在DllTest.h中加入如下代碼
#ifndef DllTest_01
#define??DllTest_01
#define EXPORT extern "C" __declspec(dllexport)
//兩個參數做加法
EXPORT int _stdcall Add(int iNum1=0,int iNum2=0);
//兩個參數做減法
EXPORT int _stdcall Subtraction(int iNum1=0,int iNum2=0,int iMethod=0);
#endif
4、在DllTest.def中加入如下代碼
LIBRARY????"DllTest"
EXPORTS
??Add
??Subtraction
5、在DllTest.cpp中寫好代碼為
// DllTest.cpp : 定義 DLL 應用程序的入口點。
//

#include "stdafx.h"
#include "DllTest.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
?????????????????????? DWORD??ul_reason_for_call,
?????????????????????? LPVOID lpReserved
?????????? )
{
????return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

//加函數
int APIENTRY Add(int a,int b)?? // APIENTRY??此關鍵字不可少
{
??return (a+b);
}
//減函數
int APIENTRY Subtraction(int a,int b,int i)
{
??if(0==i)
????return (a-b);
??else
????return (b-a);
}
6、這樣編譯生成就可以得到對應的DllTest.dll的文件了
二、C#調用dll文件
1、創建一個c#的控制臺程序(當然其他也沒有問題),自動生成以下代碼
using System;
using System.Collections.Generic;
using System.Text;
//using System.Runtime.InteropServices;

namespace CSharpIncludeC__Dll
{
????class Program
????{
????????static void Main(string[] args)
????????{
????????}
????}
}
2、添加命名空間using System.Runtime.InteropServices;
3、若要引用dll文件,首先吧dll文件自行拷貝到bin/debug,文件夾下,沒有的話,先編譯一下。
4、添加屬性
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);
5、最終產生代碼
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace CSharpIncludeC__Dll
{
????class Program
????{
????????[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
????????static extern int Add(int iNum1, int iNum2);

????????[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
????????static extern int Subtraction(int iNum1,int iNum2,int iMethod);

????????static void Main(string[] args)
????????{
????????????int iValue = Add(1, 2);
????????????Console.WriteLine(iValue);
????????????iValue = Subtraction(1, 2, 1);
????????????Console.WriteLine(iValue);
????????????Console.Read();
????????}
????}
}
6、生成項目運行就可以了,結果是3和1

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389093.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389093.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389093.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

理解ConstraintLayout 對性能的好處

自從在17年GoogleI/O大會宣布了Constraintlayout,我們持續提升了布局的穩定性和布局編輯的支持。我們還為ConstraintLayout添加了一些新特性支持創建不同類型的布局,添加這些新特性,可以明顯的提升性能,在這里,我門將討論Contrain…

數據湖 data lake_在Data Lake中高效更新TB級數據的模式

數據湖 data lakeGOAL: This post discusses SQL “UPDATE” statement equivalent for a data lake (object) storage using Apache Spark execution engine. To further clarify consider this, when you need to perform conditional updates to a massive table in a relat…

如何理解運維

運維工程師(運營),負責維護并確保整個服務的高可用性,同時不斷優化系統架構提升部署效率,優化資源利用率提高整體的投資回報率。運維工程師面對的最大挑戰是大規模集群的管理問題,如何管理好幾十萬臺服務器…

advanced installer更換程序id_好程序員web前端培訓分享kbone高級-事件系統

好程序員web前端培訓分享kbone高級-事件系統:1、用法,對于多頁面的應用,在 Web 端可以直接通過 a 標簽或者 location 對象進行跳轉,但是在小程序中則行不通;同時 Web 端的頁面 url 實現和小程序頁面路由也是完全不一樣…

ai對話機器人實現方案_顯然地引入了AI —無代碼機器學習解決方案

ai對話機器人實現方案A couple of folks from Obviously.ai contacted me a few days back to introduce their service — a completely no-code machine learning automation tool. I was a bit skeptical at first, as I always am with supposedly fully-automated solutio…

網絡負載平衡的

網絡負載平衡允許你將傳入的請求傳播到最多達32臺的服務器上,即可以使用最多32臺服務器共同分擔對外的網絡請求服務。網絡負載平衡技術保證即使是在負載很重的情況下它們也能作出快速響應。 網絡負載平衡對外只須提供一個IP地址(或域名)。 如…

透明狀態欄導致windowSoftInputMode:adjustResize失效問題

當我們通過下面代碼: getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); 設置狀態欄透明,當界面存在EditText時,在activity里面設置windowSoftInputMode:…

[TimLinux] JavaScript 元素動態顯示

1. css的opacity屬性 這個屬性用于:設置元素的不透明級別,取值范圍:從 0.0 (完全透明)到 1.0(完全不透明),元素所在的文本流還在。這個屬性的動態變化可以用來設置元素的淡入淡出效果…

神經網絡 CNN

# encodingutf-8import tensorflow as tfimport numpy as npfrom tensorflow.examples.tutorials.mnist import input_datamnist input_data.read_data_sets(MNIST_data, one_hotTrue)def weight_variable(shape): initial tf.truncated_normal(shape, stddev0.1) # 定義…

圖片中的暖色或冷色濾色片是否會帶來更多點擊? —機器學習A / B測試

A/B test on ads is the art of choosing the best advertisement that optimizes your goal (number of clicks, likes, etc). For example, if you change a simple thing like a filter in your pictures you will drive more traffic to your links.廣告的A / B測試是一種選…

3d制作中需要注意的問題_淺談線路板制作時需要注意的問題

PCB電路板是電子設備重要的基礎組裝部件,在制作PCB電路板時,只有將各個方面都考慮清楚,才能保證電子設備在使用時不會出現問題。今天小編就與大家一起分享線路板制作時需要注意的問題,歸納一下幾點:1、考慮制作類型電路…

冷啟動、熱啟動時間性能優化

用戶希望應用程序能夠快速響應并加載。 一個啟動速度慢的應用程序不符合這個期望,可能會令用戶失望。 這種糟糕的體驗可能會導致用戶在應用商店中對您的應用進行糟糕的評價,甚至完全放棄您的應用。 本文檔提供的信息可幫助您優化應用的啟動時間。 它首先…

python:lambda、filter、map、reduce

lambda 為關鍵字。filter,map,reduce為內置函數。 lambda:實現python中單行最小函數。 g lambda x: x * 2 #相當于 def g(x):return x*2print(g(3))# 6 注意:這里直接g(3)可以執行,但沒有輸出的,前面的…

集群

原文地址:http://www.microsoft.com/china/MSDN/library/windev/COMponentdev/CdappCEnter.mspx?mfrtrue 本文假設讀者熟悉 Windows 2000、COM、IIS 5.0 摘要 Application Center 2000 簡化了從基于 Microsoft .NET 的應用程序到群集的部署,群集是一組…

Myeclipes連接Mysql數據庫配置

相信大家在網站上也找到了許多關于myeclipes如何連接mysql數據庫的解決方案,雖然每一步都按照他的步驟來,可到最后還是提示連接失敗,有的方案可能應個人設備而異,配置環境不同導致。經過個人多方探索終于找到一個簡單便捷的配置方…

cnn圖像二分類 python_人工智能Keras圖像分類器(CNN卷積神經網絡的圖片識別篇)...

上期文章我們分享了人工智能Keras圖像分類器(CNN卷積神經網絡的圖片識別的訓練模型),本期我們使用預訓練模型對圖片進行識別:Keras CNN卷積神經網絡模型訓練導入第三方庫from keras.preprocessing.image import img_to_arrayfrom keras.models import lo…

圖卷積 節點分類_在節點分類任務上訓練圖卷積網絡

圖卷積 節點分類This article goes through the implementation of Graph Convolution Networks (GCN) using Spektral API, which is a Python library for graph deep learning based on Tensorflow 2. We are going to perform Semi-Supervised Node Classification using C…

[微信小程序] 當動畫(animation)遇上延時執行函數(setTimeout)出現的問題

小程序中當動畫animation遇上setTimeout函數內部使用this.setData函數,通常情況下會出現報錯。本文先告訴解決方法,后分析報錯原因 1.解決方法: 在 setTimeout() 函數的同級加上 const that this; ,然后將this.setData換成that…

關于使用pdf.js預覽pdf的一些問題

手機應用中pdf展示使用非常廣泛, 一些pdf由于特殊的內容比如文字、電子簽章必須使用復雜的解析器來解析,當使用MultiPdf 這個庫加載,會使得包變得非常龐大, 這里我們考慮使用pdf.js 來解析pdf. 引用非常簡單,只需要把…

SqlHelper改造版本

using System;using System.Configuration;using System.Data;using System.Data.SqlClient;using System.Collections; /// <summary> /// SqlHelper類是專門提供給廣大用戶用于高性能、可升級和最佳練習的sql數據操作 /// </summary> public abstract c…