开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: ds9660
收起左侧

[易源码分享] 【重磅技术】把C#类库Dll改造为Win32Dll免COM、免zc

[复制链接]
发表于 2020-4-21 15:08:19 | 显示全部楼层   浙江省温州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 13 天

发表于 2020-4-20 08:52:54 | 显示全部楼层   吉林省长春市
ds9660 发表于 2020-4-17 11:49
我这边测试是可以的

能不能把c#上传上来 。测试多次仍然不行,看看到底改了哪里

补充内容 (2020-4-23 09:52):
自己搞定了
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 13 天

发表于 2020-4-20 08:50:36 | 显示全部楼层   吉林省长春市
第一个问题:到底要不要加static
第二个问题:我不加提示没有导出的函数
第三个:我加了static ,提示这样。没有显示耗时多少 编译完成的字样。帮我看下这个c#怎么改。最好能把你改好的c#打包上来。之前你截图显示正常 上传的只有dll 我还是不知道是哪里的问题

** 类库文件: C:\Users\Administrator.MS-20180419IBNC\Desktop\类库练习\文件名排序\文件名排序\bin\Debug\文件名排序.dll
* 类 FileNameSort: 导出 1 个函数:
    #1:*FilesSort



  
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;
namespace nettoedll
{

//必须加入这个https://blog.csdn.net/disi4921/article/details/101187187
// AutoDual 指示自动为类生成双重类接口并向 COM 公开。为该类接口生成类型信息并在类型库中发布。由于 ClassInterfaceAttribute 中描述的版本控制方面的限制,极力建议不要使用 AutoDual。
[ClassInterface (ClassInterfaceType.AutoDual)]
public  class FileNameSort : System.Collections.IComparer
{
//调用DLL
[System.Runtime.InteropServices.DllImport ("Shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW (string param1, string param2);
//前后文件名进行比较。
public  int Compare (object name1, object name2)
{
if (null == name1 && null == name2)
{
return 0;
}
if (null == name1)
{
return -1;
}
if (null == name2)
{
return 1;
}
return StrCmpLogicalW (name1.ToString (), name2.ToString ());
}
[MethodProperty (Export = true)]
public  string  *FilesSort (string filePath )
{
// string[] arrayFileList = null;
string reslutText = "";
//路径自己换下。
DirectoryInfo folder = new DirectoryInfo (filePath);
if (folder.Exists)
{
FileInfo[] files = folder.GetFiles ();
// 文件名的升序
Array.Sort (files, new FileNameSort ());
//创建数组
string[] arrayFileList2 = new string[files.Length];//创建数组
for (int i = 0; i < files.Length; i++)
{
reslutText = reslutText + files[i].ToString () + "\r\n";
//arrayFileList2[i] = files[i].ToString ();
// writeLine:表示打印一行;Write:表示不换行打印
Console.WriteLine (files[i]);  // 打印数组的内容
}
//返回数组易语言用不了
//arrayFileList = arrayFileList2;
}
// fileSortlist = arrayFileList;
return reslutText;
}
}
}



补充内容 (2020-4-23 09:52):
搞定了
回复 支持 反对

使用道具 举报

结帖率:93% (115/124)

签到天数: 13 天

发表于 2020-4-20 08:49:22 | 显示全部楼层   吉林省长春市
第一个问题:到底要不要加static
第二个问题:我不加提示没有导出的函数
第三个:我加了static ,提示这样。没有显示耗时多少 编译完成的字样。帮我看下这个c#怎么改才行

** 类库文件: C:\Users\Administrator.MS-20180419IBNC\Desktop\类库练习\文件名排序\文件名排序\bin\Debug\文件名排序.dll
* 类 FileNameSort: 导出 1 个函数:
    #1:*FilesSort



  
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;
namespace nettoedll
{

//必须加入这个https://blog.csdn.net/disi4921/article/details/101187187
// AutoDual 指示自动为类生成双重类接口并向 COM 公开。为该类接口生成类型信息并在类型库中发布。由于 ClassInterfaceAttribute 中描述的版本控制方面的限制,极力建议不要使用 AutoDual。
[ClassInterface (ClassInterfaceType.AutoDual)]
public  class FileNameSort : System.Collections.IComparer
{
//调用DLL
[System.Runtime.InteropServices.DllImport ("Shlwapi.dll", CharSet = CharSet.Unicode)]
private static extern int StrCmpLogicalW (string param1, string param2);
//前后文件名进行比较。
public  int Compare (object name1, object name2)
{
if (null == name1 && null == name2)
{
return 0;
}
if (null == name1)
{
return -1;
}
if (null == name2)
{
return 1;
}
return StrCmpLogicalW (name1.ToString (), name2.ToString ());
}
[MethodProperty (Export = true)]
public  string  *FilesSort (string filePath )
{
// string[] arrayFileList = null;
string reslutText = "";
//路径自己换下。
DirectoryInfo folder = new DirectoryInfo (filePath);
if (folder.Exists)
{
FileInfo[] files = folder.GetFiles ();
// 文件名的升序
Array.Sort (files, new FileNameSort ());
//创建数组
string[] arrayFileList2 = new string[files.Length];//创建数组
for (int i = 0; i < files.Length; i++)
{
reslutText = reslutText + files[i].ToString () + "\r\n";
//arrayFileList2[i] = files[i].ToString ();
// writeLine:表示打印一行;Write:表示不换行打印
Console.WriteLine (files[i]);  // 打印数组的内容
}
//返回数组易语言用不了
//arrayFileList = arrayFileList2;
}
// fileSortlist = arrayFileList;
return reslutText;
}
}
}



补充内容 (2020-4-23 09:52):
搞定了
回复 支持 反对

使用道具 举报

结帖率:76% (13/17)
发表于 2020-4-18 15:40:40 | 显示全部楼层   湖南省怀化市
TIM截图20200409195559.png
成品
xNet.rar (39.48 KB, 下载次数: 1)

点评

你的问题已解决,可下最新版:https://bbs.125.la/thread-14563242-1-1.html   安徽省滁州市  发表于 2020-4-23 17:35
回复 支持 反对

使用道具 举报

结帖率:50% (4/8)

签到天数: 2 天

发表于 2020-4-18 15:25:00 | 显示全部楼层   广东省东莞市
把C#类库Dll改造为Win32Dll免COM、免zc
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 7 天

发表于 2020-4-18 15:01:31 | 显示全部楼层   北京市北京市
感谢分享,易语言技术交流因你们而精彩!
回复 支持 反对

使用道具 举报

发表于 2020-4-18 14:47:27 | 显示全部楼层   云南省文山壮族苗族自治州
这个很牛!
回复 支持 反对

使用道具 举报

结帖率:50% (1/2)
发表于 2020-4-18 14:24:35 | 显示全部楼层   安徽省宿州市
好东西学习了

回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 1 天

发表于 2020-4-18 13:15:02 | 显示全部楼层   河南省商丘市
666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表