- 博客(75)
- 资源 (2)
- 收藏
- 关注
原创 Qt单一应用实例判断
原本项目中使用QSharedMemory的方法来判断当前是否已存在运行的实例,但在MacOS上,当程序异常崩溃后,QSharedMemory没有被正常销毁,导致应用程序无法再次被打开。
2023-10-08 22:53:19 991
原创 MinGW编译运行报错RTTI symbol not found for class ‘XXX‘
MinGW编译运行报错RTTI symbol not found for class 'XXX'
2023-08-18 09:29:45 499
原创 Smart Snippets 屏蔽wchar_t告警
最近在做微信离线支付功能,工程中添加了微信提供的libwxcodepay.a文件后,编译出现告警,告警信息如截图中所示: 原因可能是因为gcc默认使用 4字节大小的wchar_t,而微信的库文件中设置了2字节大小,导致产生此告警。 经过一番查找,发现可通过设置-fshort-wchar,改变工程中wchar_t的大小,但这个可能会引起其他不可预知的问题,所以还是考虑暂时将告警屏蔽。--no-wchar-size-warning可以屏...
2021-11-15 22:45:57 379
原创 十一、JS调用C++函数附带外部数据
有时候我们需要对不同的js函数名称设置相同的回调函数,如何实现呢?场景:需要通过注入C++函数为js提供分级日志函数。重点函数: static Local<FunctionTemplate> New( Isolate* isolate, FunctionCallback callback = nullptr, Local<Value> data = Local<Value>(), Local<Sig...
2021-09-02 23:04:52 248
原创 十四、再次使用msvc编译v8静态库
经验证,可通过以下命令编译出 v8_monolith.lib release版本且可以使用,但试图编译debug版本时依旧报错,没有解决。python .\tools\dev\v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false use_custom_libcxx=false is_component_build=false treat_warnings_as_errors=false...
2021-08-21 23:52:03 619
原创 十三、v8 platform里thread pool使用
在v8源码 default-platform.h 中,DefaultPlatform类中有一个私有对象worker_threads_task_runner_,是一个线程池对象,这里研究一下如何使用这个对象执行多个任务。首先,参照hello-world.cc示例中的代码,因为isolate的需要和脚本执行在同一线程中,所以从isolate创建部分开始直至脚本执行完毕全部封装为一个函数。内容不复杂,直接上源码吧。main.cpp// Copyright 2015 the V...
2021-08-20 00:06:19 313
原创 十二、JS调用C++函数抛出异常及捕捉异常
本文讲述如何利用v8::TryCatch捕捉js代码中发生的异常。首先,声明TryCatch对象。v8::TryCatch trycatch( isolate );然后,定义抛出异常的函数:void ThrowException( const v8::FunctionCallbackInfo<v8::Value>& info ) { v8::Isolate* isolate = info.GetIsolate(); v8::Handle...
2021-08-18 23:41:37 297
原创 十、JS调用C++函数
参考《Getting started with embedding V8 · V8》Templates首先,C++函数,这里以文档中的 LogCallback 为例:void LogCallback( const v8::FunctionCallbackInfo<v8::Value>& info ) { if ( info.Length() < 1 ) return; v8::Isolate* isolate = info.GetIs...
2021-08-18 22:10:36 2714
原创 九、JS使用C++对象及其属性方法
参考《Getting started with embedding V8 · V8》Accessing dynamic variables首先,创建Point类#pragma onceclass Point{public: Point( int x, int y ) : x_( x ), y_( y ) { } int x_, y_; int Add() { return x_ + y_; }};定义访问x_,y_的方法:// ge...
2021-08-17 23:33:40 233
原创 八、JS使用C++类及其方法
参考《Getting started with embedding V8 · V8》Accessing dynamic variables首先,创建Point类class Point{public: Point( int x, int y ) : x_( x ), y_( y ) { } int x_, y_;};其次,编写Point类的创建函数:// point constructorvoid PointConstructor( const ...
2021-08-16 23:16:51 303
原创 七、嵌入v8引擎访问全局变量
参考《Getting started with embedding V8 · V8》Accessing static global variables首先,封装对全局变量的Set和Get方法:void GlobalValueGetter( Local<String> property, const PropertyCallbackInfo<Value>& info ) { info.GetReturnValue().Set( gValue...
2021-07-27 22:51:49 365 1
原创 六、v8引擎执行JS文件
这个环节比较简单,直接上代码了main.cpp// Copyright 2015 the V8 project authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#include <stdio.h>#include <stdlib.h>#...
2021-07-27 22:05:18 686
原创 五、再次执行hello-world.cc
继续执行示例《二、执行v8引擎示例代码_永远的魔术1号-CSDN博客》添加 include到项目“附加包含目录”; 添加项目“附加库目录”; 添加 node\Debug\lib下所有库文件到项目“附加依赖项”。这里是库文件的文件名列表:brotli.libcares.libhistogram.libicudata.libicui18n.libicutools.libicuucx.liblibnode.liblibuv.libllhttp...
2021-07-27 21:40:59 199
原创 四、Node.js中的v8
由于之前编译v8默认使用clang.exe,导致编译出的库文件函数都带有__1命名空间,与cl编译的程序无法配合。尝试使用msvc的cl.exe编译(编译选项is_clang=false),却又在Link v8的时候报出了一堆乱码的错误,也不知道如何解决。所以换个思路,尝试编译Node.js,从编译出的文件中得到v8相关的库文件。一、Node.js简介Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时。二、下载源码 ...
2021-07-26 23:06:35 662 1
原创 LNK2001: 无法解析的外部符号 “public: static struct QMetaObject const QsciScintilla::staticMetaObject”
今天在使用QsciScintilla的派生类进行信号槽绑定的时候,遇到了LNK2001:无法解析的外部符号问题,可是我的派生类里Q_OBJECT宏已经加上了,为什么还会报这个错误呢?error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const QsciScintilla::staticMetaObject" (?staticMetaObject@QsciScintilla@@2UQMetaObject@@B)...
2021-07-10 23:27:43 2619 3
原创 三、VS2019编译v8引擎
接着上一篇实践发现的问题《C++使用v8引擎执行JavaScript_永远的魔术1号-CSDN博客》,我在网上查找了很多资料,原因都是说,由于v8默认使用了clang编译,而clang使用的是libc++作为C++标准库,而demo使用的环境则是使用libstdc++作为标准库,两种标准库不同,存在inline namespace __1的问题。 然后又看到网上又很多提到可以使用gn命令编译,在命令中增加参数控制不使用clang,于是我尝试着编译了一下。先说一下结果,编译过...
2021-07-01 22:05:19 390 3
原创 二、执行v8引擎示例代码
文章里使用v8源代码的目录下的示例代码v8\samples\hello-world.cc// Copyright 2015 the V8 project authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#include <stdio.h>#inclu...
2021-06-27 23:55:34 873 2
原创 一、编译v8引擎
官方网站What is V8?V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++. It is used in Chrome and in Node.js, among others.1. 源码仓库V8’s Git repository is located athttps://chromium.googlesource....
2021-06-27 14:25:19 479
原创 Scintilla
1. Scintilla简介官方网站A free source code editing component for Win32, GTK, and OS XScintilla是一个免费、跨平台、支持语法高亮的编辑控件。它完整支持源代码的编辑和调试,包括语法高亮、错误指示、代码完成 (code completion)和调用提示(call tips)。能包含标记(marker)的页边(margin)可用于标记断点、折叠和高亮当前行。它完全开放源代码...
2021-06-22 22:58:45 346
原创 gRPC C++ windows程序实践(二)
这篇文章主要介绍如何基于gRPC工程编译生成的文件进行实际应用开发,代码参照 grpc\examples\cpp\helloworld 目录下的示例代码。1. 编写proto文件创建example.proto文件如下图:syntax = "proto3";package testpack;// The greeting service definition.service Greeter { // Sends a greeting rpc Say (Request) ret
2021-04-23 23:43:55 1130 3
原创 gRPC C++ windows程序实践(一)
在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。gRPC1. 下载代码repo:https://github.com/grpc/grpc.gitgit clone https://
2021-04-21 22:36:01 811 1
原创 Golang空结构体
Golang中空结构体的地址如何分配,先看看测试结果:package mainimport "fmt"func main() { Test()}func Test() { e1 := Empty{} e2 := Empty{} e3 := Empty{} fmt.Printf("e1 : %p\ne2 : %p\ne3 : %p", &e1, &e2, &e3)}type Empty struct {}输出结果:PS E:\devel
2021-03-31 14:08:16 582
原创 Golang iota踩坑
iota是Golang中的一个特殊变量,通常在定义“枚举”时使用。1. 单独声明每个常量,每遇到const时iota为0package mainimport "fmt"const a = iotaconst b = iotafunc main() { fmt.Printf("a = %d\r\nb = %d", a, b)}输出:a = 0b = 02. iota在const组合中的使用,也就是常用的“枚举”声明中使用,要小心谨慎1)连续使用pack
2020-12-23 23:00:05 810
原创 iris配置https访问
参照《Iris框架中文文档》- HTTP主机配置一节,配置如下:端口号可不限于https默认端口443。例如:_ = app.Run(iris.TLS(":8080", "****.cer", "****.key"))
2020-12-04 23:10:22 1353
原创 ubuntu 解决不定时弹出“热点登录”界面问题
解决办法:编辑 /etc/NetworkManager/NetworkManager.conf 文件加入:[connectivity]uri=interval=0保存后退出service network-manager restart
2020-05-11 09:55:44 4338 7
原创 编译dlv调试工具
git clone https://github.com/go-delve/delve.gitcd delve/cmd/dlvgo build执行完毕后会在当前目录下生成dlv程序
2020-05-06 16:51:09 633
原创 使用GODEBUG分析程序的内存使用情况
用法执行test程序之前添加环境变量GODEBUG='gctrace=1'来跟踪打印垃圾回收器信息设置gctrace=1会使得垃圾回收器在每次回收时汇总所回收内存的大小以及耗时,并将这些内容汇总成单行内容打印到标准错误输出中。$ GODEBUG='gctrace=1' ./test格式gc # @#s #%: #+#+# ms clock, #+#/#/#+# ...
2020-03-31 14:04:17 638
原创 消除QToolButton设置menu时出现的箭头
设置button样式表QToolButton::menu-indicator { image: none;}
2020-02-09 12:38:18 4506
原创 GoLand ToolBar
默认GoLand不显示ToolBar,需要通过设置,显示ToolBar默认状态:View -> Appearance -> 勾选 Toolbar
2019-11-18 09:35:51 722
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人