[Help] I want to use csharp to make dll and more.

Started by 2b2ttianxiu, Apr 16, 2025, 08:54 AM

Previous topic - Next topic

2b2ttianxiu

I want to use csharp language to make dll c squirrel or call with python, but how can i make it(?
or how to fast develop plugin

2b2ttianxiu

maybe can use unix or tcp socket to call other language

MEGAMIND

Quote from: 2b2ttianxiu on Apr 16, 2025, 08:54 AMI want to use csharp language to make dll c squirrel or call with python, but how can i make it(?
or how to fast develop plugin
YOU can simply adapt that by using plugin sdk of vcmp & Download sources from Habi's basic plugin download fiels check whats going on..! use those in chsarp if ur good at it

2b2ttianxiu

Quote from: MEGAMIND on Apr 16, 2025, 09:05 AM
Quote from: 2b2ttianxiu on Apr 16, 2025, 08:54 AMI want to use csharp language to make dll c squirrel or call with python, but how can i make it(?
or how to fast develop plugin
YOU can simply adapt that by using plugin sdk of vcmp & Download sources from Habi's basic plugin download fiels check whats going on..! use those in chsarp if ur good at it
But... i use those, maybe get LINK2019 or other

2b2ttianxiu

生成开始于 19:15...
1>------ 已启动生成: 项目: helloworld, 配置: Debug x64 ------
1>SQConsts.cpp
1>The contents of <variant> are available only with C++17 or later.
1>SQFuncs.cpp
1>The contents of <variant> are available only with C++17 or later.
1>Y:\c\helloworld\SQFuncs.cpp(24,15): warning C4244: "初始化": 从"SQInteger"转换到"int",可能丢失数据
1>SQMain.cpp
1>The contents of <variant> are available only with C++17 or later.
1>正在生成代码...
1>LINK : warning LNK4075: 忽略"/INCREMENTAL"(由于"/OPT:ICF"规范)
1>SQConsts.obj : warning LNK4075: 忽略"/EDITANDCONTINUE"(由于"/OPT:ICF"规范)
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::debug(char const *)" (?debug@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::debug(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?debug@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::error(char const *)" (?error@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::error(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?error@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Logger::format_number(unsigned long,int)" (?format_number@Logger@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KH@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Logger::getFormattedTime(void)" (?getFormattedTime@Logger@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::info(char const *)" (?info@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::info(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?info@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl Logger::parseLogMessage(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?parseLogMessage@Logger@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@0@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::rawLogger(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?rawLogger@Logger@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::rawLogger(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *)" (?rawLogger@Logger@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::rawLogger(char const *,char const *)" (?rawLogger@Logger@@YAXPEBD0@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::success(char const *)" (?success@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::success(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?success@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::warning(char const *)" (?warning@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void __cdecl Logger::warning(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?warning@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "void * Logger::hstdout" (?hstdout@Logger@@3PEAXEA) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "bool Logger::DEBUG" (?DEBUG@Logger@@3_NA) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > Logger::COLORS" (?COLORS@Logger@@3V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::map<int,int,struct std::less<int>,class std::allocator<struct std::pair<int const ,int> > > Logger::COLORS_32" (?COLORS_32@Logger@@3V?$map@HHU?$less@H@std@@V?$allocator@U?$pair@$$CBHH@std@@@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > Logger::LEVELS" (?LEVELS@Logger@@3V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > Logger::defaultPrefix" (?defaultPrefix@Logger@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > Logger::FORMAT" (?FORMAT@Logger@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQFuncs.obj : error LNK2005: "class std::basic_regex<char,class std::regex_traits<char> > Logger::REGEXP" (?REGEXP@Logger@@3V?$basic_regex@DV?$regex_traits@D@std@@@std@@A) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::debug(char const *)" (?debug@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::debug(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?debug@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::error(char const *)" (?error@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::error(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?error@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Logger::format_number(unsigned long,int)" (?format_number@Logger@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@KH@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl Logger::getFormattedTime(void)" (?getFormattedTime@Logger@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::info(char const *)" (?info@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::info(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?info@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl Logger::parseLogMessage(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?parseLogMessage@Logger@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@0@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::rawLogger(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?rawLogger@Logger@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::rawLogger(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *)" (?rawLogger@Logger@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBD@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::rawLogger(char const *,char const *)" (?rawLogger@Logger@@YAXPEBD0@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::success(char const *)" (?success@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::success(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?success@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::warning(char const *)" (?warning@Logger@@YAXPEBD@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void __cdecl Logger::warning(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?warning@Logger@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "void * Logger::hstdout" (?hstdout@Logger@@3PEAXEA) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "bool Logger::DEBUG" (?DEBUG@Logger@@3_NA) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > Logger::COLORS" (?COLORS@Logger@@3V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::map<int,int,struct std::less<int>,class std::allocator<struct std::pair<int const ,int> > > Logger::COLORS_32" (?COLORS_32@Logger@@3V?$map@HHU?$less@H@std@@V?$allocator@U?$pair@$$CBHH@std@@@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > Logger::LEVELS" (?LEVELS@Logger@@3V?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > Logger::defaultPrefix" (?defaultPrefix@Logger@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > Logger::FORMAT" (?FORMAT@Logger@@3V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) 已经在 SQConsts.obj 中定义
1>SQMain.obj : error LNK2005: "class std::basic_regex<char,class std::regex_traits<char> > Logger::REGEXP" (?REGEXP@Logger@@3V?$basic_regex@DV?$regex_traits@D@std@@@std@@A) 已经在 SQConsts.obj 中定义
1>  正在创建库 Y:\c\helloworld\x64\Debug\helloworld.lib 和对象 Y:\c\helloworld\x64\Debug\helloworld.exp
1>Y:\c\helloworld\x64\Debug\helloworld.dll : fatal error LNK1169: 找到一个或多个多重定义的符号
1>已完成生成项目"helloworld.vcxproj"的操作 - 失败。
========== 生成: 0 成功,1 失败,0 最新,0 已跳过 ==========
========== 生成 于 19:16 完成,耗时 25.540 秒 ==========


:(

[R3V]Kelvin

I don't quite understand what you mean, but if you are trying to get started into plugin development in VC:MP I would follow this tutorial, which worked for me pretty good back in the day when I was new to this myself:
https://forum.vc-mp.org/index.php?topic=7347.0
  • Don't know about C#, but this one works for C++ (and, with a few tweaks, C)
  • The SDK header on that tutorial is outdated, find the latest one at https://v04.adtec.ovh/VCMP.h
  • Requires Visual Studio (which you seem to be using already, anyway)