请问 csharp的windows程序也可以做成dll吗?

zhtoad 2017-01-07 10:49:27
有一个小的需求。用csharp做一个dll,这个dll能够截屏。
里面需要用到 using System.Drawing.Imaging;

我已经弄好windows程序,也就是一个界面,一个按钮,按下按钮就截屏。
现在,我直接把输出变成 类库。 class library。
但是生成不了dll。

我查了baidu,只有教程说先选择console 程序,简单的函数就是数值计算的。
我也成功生成了dll。但是一旦我加入截屏的那些程序,就无法编译通过了。

所以,我想问一下,涉及到windows界面操作(比如截屏)的程序可以编译成dll吗?
谢谢。
...全文
540 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
john_QQ:2335298917 2017-01-08
  • 打赏
  • 举报
回复
.net能生成非托管程序的只有C++可以了,你如果要给python调用,可以给ironPython调用,如果给原生Python,就只能用C++了
stherix 2017-01-07
  • 打赏
  • 举报
回复
直接把输出类型改成类库就行了啊 不可能编译通不过 注意你的工程引用里要有System.Drawing
  • 打赏
  • 举报
回复
可以,新建项目的时候选择项目类型为“Windows窗体控件库”,如是WPF则选择“WPF用户控件库”。
zhtoad 2017-01-07
  • 打赏
  • 举报
回复
谢谢 johnliuyuan 大侠。 你说的托管的dll,我已经成功弄出来了。 但是,我做的事儿是生成dll给给python用的。 所以我想问一下,怎么用c#生成 非托管的dll 让其他的程序也能用这个DLL。 多谢了。
zhtoad 2017-01-07
  • 打赏
  • 举报
回复
非常感谢这么快的回答。 我吧下面2行去掉了。 [DllImport("creatDll2.dll")] extern public static void _CorDllMain(ref int param1,ref int param2) ; 然后,用csc这样编译 csc /t:exe /r:simDll.dll *.cs 得到exe后运行,依然找不到入口函数。 不管我用 _CorDllMain 还是 dllentryfunc。都提示说:找不到。
john_QQ:2335298917 2017-01-07
  • 打赏
  • 举报
回复
引用 3 楼 zhtoad 的回复:
我试了一个非常简单的程序。DLL 的函数如下 using System; namespace creatDll2 { public class Program { public static void dllentryfunc(int a,int b) { int c = a+b; Console.WriteLine(a.ToString()+ " + "+b.ToString()+" = "+c.ToString()); } } } 编译后,用dll查看器一看,只有一个函数 _CorDllMain 使用的时候, [DllImport("creatDll2.dll")] extern public static void _CorDllMain(ref int param1,ref int param2) ; 不管我用 _CorDllMain 还是 dllentryfunc。都提示说: System.EntryPointNotFoundException: Unable to find an entry point named '_CorDllMain' in DLL 'creatDll2.dll'. 郁闷至极呀。”
托管dll不用这样引用,直接在项目里添加reference,然后直接调用就可以了
zhtoad 2017-01-07
  • 打赏
  • 举报
回复
我试了一个非常简单的程序。DLL 的函数如下 using System; namespace creatDll2 { public class Program { public static void dllentryfunc(int a,int b) { int c = a+b; Console.WriteLine(a.ToString()+ " + "+b.ToString()+" = "+c.ToString()); } } } 编译后,用dll查看器一看,只有一个函数 _CorDllMain 使用的时候, [DllImport("creatDll2.dll")] extern public static void _CorDllMain(ref int param1,ref int param2) ; 不管我用 _CorDllMain 还是 dllentryfunc。都提示说: System.EntryPointNotFoundException: Unable to find an entry point named '_CorDllMain' in DLL 'creatDll2.dll'. 郁闷至极呀。”

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧