js調用c+代碼,C++ js

本文目錄一覽:

如何實現 js 和 c++ 的互相調用

腳本執行的基礎是WEB控制項,

那麼C++在WINDOWS下運行可以裝入WEB控制項實現腳本調用。

下面是一段引用某位博主的代碼可以參考一下。

// vcJscript.cpp : 定義控制台應用程序的入口點。

//

#include “stdafx.h”

#import “C:/windows/system32/msscript.ocx” // msscript.ocx

using namespace MSScriptControl;

#include fstream

#include string

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

HRESULT hr = CoInitialize(NULL); //使用一個變數初始化COM設置,單線程運行

IScriptControlPtr pScriptControl(__uuidof(ScriptControl)); //初始化腳本控制項

pScriptControl-Language = “JavaScript”; //設置語言

pScriptControl-AllowUI = TRUE;//設置顯示

fstream file;//文件流用於讀出JS代碼

file.open( “test.js” );

string strFileContent, strTemp;

char szTemp[1024]=””;

do

{

file.read(szTemp, 1024);

strFileContent.append( szTemp );//拼接JS文件

memset( szTemp, 0, 1024 );

}

while ( !file.fail() );

file.close();

pScriptControl-AddCode(strFileContent.c_str());//向控制項加入代碼

VARIANT A = pScriptControl-Eval(“main(4);”); //獲取返回值

int iRet = A.intVal;

return 0;

}

如何在IOS平台上使用js直接調用OC方法

在Cocos2d-JS v3.0 RC2中,與Android上js調用Java一樣,Cocos2d-JS也提供了在iOS和Mac上js直接調用Objective-C的方法,示例代碼如下:

1 var ojb = jsb.reflection.callStaticMethod(className, methodNmae, arg1, arg2, …..);

在 jsb.reflection.callStaticMethod 方法中,我們通過傳入OC的類名,方法名,參數就可以直接調用OC的靜態方法,並且可以獲得OC方法的返回值。

•參數中的類名,只需要傳入OC中的類名即可,與Java不同,類名並不需要路徑。比如你在工程底下新建一個類 NativeOcClass ,只要你將他引入工程,那麼他的類名就是 NativeOcClass ,你並不需要傳入它的路徑。

1 import Foundation/Foundation.h @interface NativeOcClass : NSObject +( BOOL )callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content; @end

方法

•js到OC的反射僅支持OC中類的靜態方法。

•方法名比較要需要注意,我們需要傳入完整的方法名,特別是當某個方法帶有參數的時候,你需要將他的:也帶上。根據上面的例子。此時的方法名字是callNativeUIWithTitle:andContent:,不要漏掉了他們之間的:。

•如果是沒有參數的函數,那麼他就不需要:,如下代碼,他的方法名是 callNativeWithReturnString ,由於沒有參數,他不需要:,跟OC的method寫法一致。

1 +(NSString *)callNativeWithReturnString;

使用示例

•下面的示例代碼將調用上面 NativeOcClass 的方法,在js層我們只需要這樣調用:

1234 var ret = jsb.reflection.callStaticMethod( “NativeOcClass” , “callNativeUIWithTitle:andContent:” , “cocos2d-js” , “Yes! you call a Native UI from Reflection” );

•這裡是這個方法在OC的實現,可以看到是彈出一個native的對話框。並把 title 和 content 設置成你傳入的參數,並返回一個boolean類型的返回值。

123 +( BOOL )callNativeUIWithTitle:(NSString *) title andContent:(NSString *)content{ UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:title message:content delegate:self cancelButtonTitle:@ “Cancel” otherButtonTitles:@ “OK” , nil]; [alertView show]; return true ; }

•此時,你就可以在 ret 中接受到從OC傳回的返回值(true)了。

注意

在OC的實現中,如果方法的參數需要使用float、int、bool的,請使用如下類型進行轉換:

•float,int 請使用NSNumber類型

•bool請使用BOOL類型。

•例如下面代碼,我們傳入2個浮點數,然後計算他們的合併返回,我們使用NSNumber而不是int、float去作為參數類型。

1 +( float ) addTwoNumber:(NSNumber *)num1 and:(NSNumber *)num2{ float result = [num1 floatValue]+[num2 floatValue]; return result;}

•目前參數和返回值支持 int, float, bool, string,其餘的類型暫時不支持。

js如何調用c語言寫的api

包含api的.h文件,然後直接調用就可以了,比如winsock.h,可以調用recv等函數,也可以在函數前面加::

答案補充

HWND hWnd = ::FindWindow(sClassName, sWindowName);//傳入類明到sClassName,窗口名sWindowName,否則傳入NULL

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309000.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-04 19:30
下一篇 2025-01-04 19:30

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29

發表回復

登錄後才能評論