All Projects → z505 → Godll

z505 / Godll

how to create windows golang DLL and load into C, or delphi, or freepascal

Programming Languages

golang
3204 projects
pascal
1382 projects
cgo
20 projects

Projects that are alternatives of or similar to Godll

Anubis
Free open-source training software / cheat for Counter-Strike: Global Offensive, written in C.
Stars: ✭ 81 (-28.32%)
Mutual labels:  dll
Hprose Delphi
Hprose is a cross-language RPC. This project is Hprose 2.0 for Delphi and FreePascal
Stars: ✭ 100 (-11.5%)
Mutual labels:  lazarus
Directx Wrappers
Wraps the main DirectX and Direct3D DLLs. It allows you to intercept calls to DirectX and Direct3D interface functions so that you can log API calls or you can add your own code into the game, such as enabling Anti-Aliasing or creating overlays in the game.
Stars: ✭ 108 (-4.42%)
Mutual labels:  dll
Injectallthethings
Seven different DLL injection techniques in one single project.
Stars: ✭ 1,297 (+1047.79%)
Mutual labels:  dll
Pymba
Python wrapper for Allied Vision's Vimba C API
Stars: ✭ 98 (-13.27%)
Mutual labels:  dll
Delphi Dev Shell Tools
Shell Extension for Delphi and Object Pascal Developers
Stars: ✭ 107 (-5.31%)
Mutual labels:  lazarus
Remote dll injector
Stealth DLL injector
Stars: ✭ 74 (-34.51%)
Mutual labels:  dll
Pasdoc
Documentation tool for ObjectPascal (Free Pascal, Lazarus, Delphi) source code
Stars: ✭ 110 (-2.65%)
Mutual labels:  lazarus
Artifacts Kit
Pseudo-malicious usermode memory artifact generator kit designed to easily mimic the footprints left by real malware on an infected Windows OS.
Stars: ✭ 99 (-12.39%)
Mutual labels:  dll
Powershell Phpmanager
A PowerShell module to install/update PHP, PHP extensions and Composer on Windows
Stars: ✭ 108 (-4.42%)
Mutual labels:  dll
Zcad
Simple CAD program
Stars: ✭ 91 (-19.47%)
Mutual labels:  lazarus
Neural Api
CAI NEURAL API - Pascal based neural network API optimized for AVX, AVX2 and AVX512 instruction sets plus OpenCL capable devices including AMD, Intel and NVIDIA.
Stars: ✭ 94 (-16.81%)
Mutual labels:  lazarus
Cross Channel chinese Localization project
[LEGACY] CROSS † CHANNEL 中文化 (汉化) 项目,源代码以及网站。(全翻译文本、全平台移植源码已公开!欢迎修改&学习!)CROSS † CHANNEL Chinese Localization Project, source codes and websites. (All translations and scripts are open, welcome on any improvements!)
Stars: ✭ 107 (-5.31%)
Mutual labels:  dll
Delphihookutils
Delphi Hooking Library by Lsuper
Stars: ✭ 85 (-24.78%)
Mutual labels:  lazarus
Chakracore Delphi
Delphi and Free Pascal bindings and classes for Microsoft's ChakraCore library
Stars: ✭ 109 (-3.54%)
Mutual labels:  lazarus
Krypton Net 5.470
A update to Component factory's krypton toolkit to support the .NET 4.7 framework.
Stars: ✭ 79 (-30.09%)
Mutual labels:  dll
Vac Hooks
Hook WinAPI functions used by Valve Anti-Cheat. Log calls and intercept arguments & return values. DLL written in C.
Stars: ✭ 103 (-8.85%)
Mutual labels:  dll
Bgrabitmap
📜 BGRABitmap graphics library made with Lazarus (Free Pascal).
Stars: ✭ 112 (-0.88%)
Mutual labels:  lazarus
Aristois Legit
Full project files for aristois, Counter-Strike: Global Offensive cheat.
Stars: ✭ 110 (-2.65%)
Mutual labels:  dll
Osiris
Free open-source game cheat for Counter-Strike: Global Offensive, written in modern C++. GUI powered by Dear ImGui.
Stars: ✭ 1,851 (+1538.05%)
Mutual labels:  dll

goDLL

Project to show people how to create MS Windows golang DLL, then load it into lazarus program, or a plain fpc command line program or another golang exe. This implies you can also use the DLL in plain C or C++ Visual Studio or GCC project. Should also be able to port this to bsd/linux/macOS

Current way of making a DLL:

  • compile go code with regular go compiler and put that puts code into .a and .h files for you. These are just like C code that GCC can use, but stored in compiled .a and .h files
  • then build a dll based on the dummy .c file (CGO) that just links the .a and .h files (go code) into a dll, using CGO (GCC automatically from go) to build the dll

Well known issues with Go DLL's:

  • AFAIK you can only add one go dll to a program, and only once, as multiple go dlls in the same program will confluct each other's go runtime at this time
  • Unloading a dll will crash program... But one go dll loaded, and kept loaded, works..
  • This may improve in the future as golang repairs these issues if they can.
  • A go runtime (which is included in all golang programs/code) is similar to a borland BPL or a .net runtime: multiple runtimes can be tricky/conflicting. It can even overwrite data if multiple runtimes exist, possibly even more tricky than a BPL. This again could be fixed in the future by golang authors if they work on dll's and unloading more in the future.
  • regarding unix dll/so: I have not tested or read about it enough to know the details. This project is just a Microsoft Windows DLL project example, could also work on unix
  • Go DLL, not "God II"

Other ideas:

  • Try statically linking go code into fpc, instead of dll put the code right into the exe directly using .a files, and making an fpc .h equivalent (should be easy)
  • show its use also in a plain c program since not all people interested in go dll's are using fpc/lazarus
  • try come up with solutions to fix "multiple go runtime" problems (multiple go DLLs loaded) and "unloading" (of dll) problems. See golang open issues 11100 and 11058
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].