[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 小白龙 于 2023-4-9 10:39 编辑

回复 24# Five66


    应该就是32位的, 这个好像没有64似的
https://github.com/jacobslusser/ScintillaNET/releases/tag/v3.6.3

对了, 忘了一点, 我的软件它只支持调用32位的dll 会不会咱们上面两个dll都是64位的? 怎么看是不是64位的dll呢

好像v3的时候, 没有64位的版本的dll

TOP

本帖最后由 小白龙 于 2023-4-9 11:12 编辑

回复 26# Five66

多谢大佬, 我用软件带的编译工具编译的, 不成功

用您刚才上面的代码和命令可以编译成功, 因为软件带的编译工具可以转成com的dll

如果不用带的编译工具, 而用VS2022来编译生成com, 我应该怎么做呢? 我的软件虽然支持DLL, 但是只支持com的, 不支持.net的dll, 要添加GUID参数什么的

TOP

回复 29# Five66
我用的下面的命令编译成功的, 我不知道编译成的dll是多少位的, 我的系统是64位win7

但是代码里面没有生成com的参数什么的,生成的dll我的软件还不能用, 不知道, 能不能用命令生成支持com的dll
  1. @echo off
  2. C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe  /r:EasyScintilla.dll /r:ScintillaNET.dll /target:library "sci.cs"
  3. pause
复制代码

TOP

我的软件在虚拟机里运行, 启动ps的速度慢不少, 不然就不用这么折腾了
但是以前自己生成过支持的com的dll, 用着速度很快

TOP

本帖最后由 小白龙 于 2023-4-9 11:25 编辑

回复 32# Five66


    我以前按下面这个教程生成过com的dll 生成的能用, 看样子, 好像就是在名字空间下放了三行代码, 但这是用的VS生成的, 现在打开ExampleProject项目后, 不知道怎么操作了, 因为咱们新生成了一个cs文件

https://www.cnblogs.com/jasonery/p/7987050.html

TOP

回复 32# Five66

大佬, 用下面的代码, 可以执行了, 但是点ok按钮, 窗口不关闭
  1. $batcode=@'
  2. @echo off
  3. set p=c:
  4. for /f "tokens=*" %%i in ('wmic logicaldisk where "name='%p%'" get DriveType^,Description^,name  /value') do (
  5.      for /f "tokens=*" %%j in ("%%i") do set %%j
  6. )
  7. echo %name%  %Description%
  8. pause
  9. '@
  10. Add-Type -Path "C:\Users\Administrator\Desktop\o\sci.dll"
  11. [ExampleProject.Nakano]::EasySci($batcode,'Windows Batch')
复制代码

TOP

本帖最后由 小白龙 于 2023-4-9 13:19 编辑

回复 36# Five66

好的, 不加也行, 直接关窗口也能输出了

前面那个报x86 dll错误, 感觉应该是版本的问题, 我在powershell调用成功时, 临时解压的文件如下, 不是以前报错的那个x86\SciLexer.dll  但是想解决这个问题, 这x86的dll从哪里找呢
"C:\Users\Administrator\AppData\Local\Temp\ScintillaNET\3.6.3\x64\SciLexer.dll"

难道我生成的dll不是x86的吗?  我的软件支持的dll只能是x86的, x64的不行, 这点可以确认

TOP

本帖最后由 小白龙 于 2023-4-9 13:45 编辑

回复 39# Five66

下面是ScintillaNET说明文档中说的,  和我想的一样, 下面红色字部分, 这么一来, 我的软件只支持x86的dll, 它在调用的dll的时候, 就解出了x86版的SciLexer.DLL 那哪里出问题了呢?
我用的是下面路径的csc这应该是x86版的, 因为还有一个csc文件在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    第二个最常见的ScintillaNET问题是混淆了ScintillaNET DLL及其本地组件SciLexer.DLL。ScintillaNET是一个包装器。没有包含核心闪烁功能的SciLexer.dll,它什么都不是。作为一个本地组件,SciLexer.dll必须为32位和64位版本的Windows分别编译。因此,实际上开发人员必须在应用程序中附带三个dll。

这被证明是一个痛点,因为开发人员通常不希望发布这么多库,或者希望将它们放在另一个位置,这会破坏PInvoke和cintillanet使用的DLL加载机制。由于同样的原因,它在Visual Studio的设计期间也会引起头痛。

为了解决这个问题,现在在ScintillaNET DLL中嵌入了32位和64位版本的SciLexer.DLL。在一个库中运行ScintillaNET所需的所有东西。除了缓解上面提到的痛苦之外,现在我们可以创建一个ScintillaNET NuGet包。

TOP

本帖最后由 小白龙 于 2023-4-10 11:20 编辑

回复 41# Five66

感谢大佬, 我被搞的筋疲力尽了快, 太难了

我用x86版的 powershell ISE 执行代码, 临时目录里也有那个x86 的 dll , 也能正常运行,
但是把C#代码按网上教程转成com的dll就不行了, 总是报错

scintillaNET看官方说明中, 它就是把x86和x64的dll整到一块的

TOP

本帖最后由 小白龙 于 2023-4-11 12:30 编辑

回复 43# Five66

多谢大佬热心指导

我现在只装了vs2022就可以操作吗? 还需要别的组件什么的吗?

用自带编译器编译成dll 是用x86的是吧

TOP

返回列表