考慮到使用e語言設計程式介面比較簡單與方便,同時又有一些比較完善的 directui 引擎的支援,故在一些實際的小專案中可以考慮用c/c++寫核心,e寫介面,兩者取長補短,提高開發效率。本文分享如何在vs2017中用使用c++編寫dll檔案並在e中進行呼叫。(在e中借助自繪引擎做的介面)
1.開啟vs2017,檔案->新建->專案-visual c++->空專案,這裡命名為demo。
2.在 資源管理器->原始檔 中新建乙個名為 demo.cpp 的 c++ 原始檔:
3.在 資源管理器->原始檔 中新建乙個 demo.def 檔案:#include "demo.h"
#include
using
namespace
std;
//返回整形的函式
int testint()
//返回字串的函式
char *teststring()
; strcpy_s(sample, "demo");
return sample;
}//有引數的函式
int add(int a, int b)
4.在 資源管理器->標頭檔案 中新建乙個 demo.h 標頭檔案:library demo
exports
testint
addteststring
5.為了得到盡可能小的體積,在 release 模式下除錯專案,報錯顯示不是有效的 win32 應用程式,不用管,找到工程目錄下 release 資料夾中生成的 demo.exe,修改其字尾為 .dll 得到 dll 檔案。#pragma once
extern
"c" __declspec(dllexport) int testint();
extern
"c" __declspec(dllexport) int add(int a, int b);
extern
"c" __declspec(dllexport) char * teststring();
1.新建e程式,新增外部dll引用:
2.這裡注意,因為c++與e預設的約定模式不同,如果命令有引數的話,「在庫中對應命令名」一欄前面要加上乙個@符號,否則會出現堆疊錯誤。
4.將 demo.dll 放在e程式的同級目錄下,或者使用 置dll裝載目錄 () 命令將下一次預設呼叫目錄轉到dll檔案所在目錄,隨後 f5 除錯程式。執行結果如下圖:.版本 2
資訊框 (到文字 (testint ()) + #換行符 + teststring () + #換行符 + 到文字 (add (100, 200)), 0, , )
結束 ()
c 呼叫c dll中的類方法總結
背景 原始 是c form呼叫c 的dll,現因為需要將 搬遷到linux中,需要先將c 的dll轉為c dll,因為c 的form暫時不方便搬遷,需要先轉後的c dll,也就是需要c 呼叫c dll,原來的c 呼叫c dll的呼叫耦合度較高,有對類成員變數和類函式的呼叫,現對呼叫過程進行總結,如果...
C 呼叫C dll中的結構體的定義
為使用者定義的結構指定自定義封送處理 可以為傳遞到非託管函式或從非託管函式返回的結構和類的字段指定自定義封送處理屬性。通過向結構或類的字段中新增 marshalas屬性可以做到這一點。還必須使用 structlayout 屬性設定結構的布局,還可以控制字串成員的預設封送處理,並設定預設封裝大小。示例...
函式呼叫模式,this在函式中的指向
全域性變數宣告 var num window.num 函式的四種呼叫模式 根據函式內部this的指向不同,可以將函式的呼叫模式分成4種 1函式呼叫模式 2方法呼叫模式 3構造函式呼叫模式 4上下文呼叫模式 借用方法模式 1 函式呼叫模式 function fn fn 如果乙個函式不是乙個物件的屬性而...