Tacnode
Embed node.js inside of C++ applications - Use https://github.com/electron/node instead
Install / Use
/learn @ZECTBynmo/TacnodeREADME
This is a fork of node that builds as a lib.
As a post-build step (which you can remove) it concatenates all output libraries into one for convenience. All together, this is a very large library. Over 150 Mb on disk, and 2.5 - 3 Mb in memory once loaded.
NOTE: I haven't tested the concatenation step on anything but windows. If it doesn't work, there may be something wrong with how I setup the postbuild step in the gyp file.
For windows, I ended up calling the library concatenation script (tools/concatlibs.py) directly from vcbuild.bat
Project Status
This is a proof of concept. It works well enough to get scripts running and basic things run okay, but I wouldn't recommend trying to use it without being ready to really roll up your sleeves. This is an very unfinished module.
Currently, there are issues with stderr and stdout. Where should they go? It would be great to build a 'log' page that's automatically hosted and receives all output, but right now nothing happens (unless it crashes haha).
To build:
Prerequisites (Unix only):
* Python 2.6 or 2.7
* GNU Make 3.81 or newer
* libexecinfo (FreeBSD and OpenBSD only)
Unix/Macintosh:
./configure
make
make install
Windows:
vcbuild.bat
To Use:
///////////////////
// You will need to create a fake argc and argv
// Here's the common case, the equivelant of "node myScript.js" from the command line
///////////////////
// First we grab the native function to find the current working directory
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
char cCurrentPath[FILENAME_MAX]; // FILENAME_MAX is defined in stdio.h
// Find the current working directory
GetCurrentDir(cCurrentPath, sizeof(cCurrentPath));
// Synthesize argv and argc
char *argv[] = {cCurrentPath, "C:/myScript.js" };
int argc = 2;
// Now we start up node. The third argument sets whether we're using the
// default UV message loop (which is blocking). If false, we use a custom
// non-blocking loop thats setup using asynchronous boost timers
node::Start( argc, argv, false );
To read more stuff
Look at the node repository https://github.com/joyent/node
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
