[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 6# czjt1234

多谢大佬指导, 这个贴子, 我主要是想学习下, 编译C或C++为DLL, 然后在PS中调用DLL的方法和事项

TOP

本帖最后由 小白龙 于 2023-3-14 20:28 编辑

回复 3# pd1


    多谢大佬指导, 现在代码和事项都有了, 就差编译dll了, 我不装vs有别的方式编译DLL吗, 以前看到过文章可以用什么tcc编译器搞,但是不知道怎么搞

TOP


QQ 20147578

TOP

回复 4# Five66


    多谢大佬指导, 我现在大致明白了思路, VS太大了, 有没有其它的编译小工具呢? 在PS中写函数, 感觉执行速度会慢, 应该没有调用dll快
:

TOP

直接编译成dll只能以p/invoke方式调用.为了兼容性,用msvc,软件就是visual studio(图形界面)或visual studio build tools(字符界面).注意要在编译选项给出导出函数或在源码需要导出的函数前加上
__declspec(dllexport)

想要在ps直接使用,需要转成c++/cli的代码并且以/clr的编译选项编译成dll,有点麻烦

其实也可以直接在ps里写个文字跟拼音的hashtable,然后索引就行了

(有多音字的存在,不管怎么样都不会100%准确)

TOP

  1. extern "C" _declspec(dllexport)void h2p(const char* szChinese)
  2. {
  3.     uint32_t bufLen = 0;
  4.     char pinyinBuf[MAXBUFLEN] = { 0 };
  5.     //const char* szChinese = "中华人民共和国 People's Republic of China";
  6.     getPinyin(szChinese, pinyinBuf, MAXBUFLEN, &bufLen, enmPinyinMode_FirstUpper);
  7.     printf("%s\n", pinyinBuf);
  8. }
复制代码
  1. $code=@"
  2. using System;
  3. using System.Runtime.InteropServices;
  4. public static class Api{
  5. [DllImport("C:/Users/Administrator/source/repos/test/x64/Release/test.dll")]
  6. public static extern int h2p(String ss);
  7.     }
  8. "@
  9. Add-Type -TypeDefinition $code
  10. [Api]::h2p("我是中国人")
复制代码

TOP

你自己写一个PS就可以了。保留他原来的CODE部分,用来识别编号;
对输入的字符串用GBK编码一个一个判断。若为一个字节则保留原字符,2个字节则高位码在前低位码在后,大于160则减去160再把高位码乖100合成4位数再去查CODE。若4位查不到则输出原字符,可能是符号之类。
QQ: 己阵亡
脚本优先 [PowerShell win10]

TOP

返回列表