win32下调用Cygwin生成的dll老是不成功,最近终于找到一篇文章,里面说明了win32如何调用Cygwin生成的dll平台移植(Cygwin与Win32程序的交互)然后按照作者说的编译好了 CygLoad.dll
作者是用VB做的例子如下:Imports System.Runtime.InteropServicesFriend Class Program
' Nested Types
Public Delegate Sub MainEntryMethod()
' Methods
<DllImport("CygLoad.dll")> _
Public Shared Sub CygwinStartUp(ByVal mainEntry As MainEntryMethod)
End Sub <STAThread()> _
Friend Shared Sub Main()
Program.CygwinStartUp(New Program.MainEntryMethod(AddressOf Program.MainEntry))
End Sub Friend Shared Sub MainEntry()Sub MainEntry()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
Application.Run(New MainForm())
End Sub
End Class我修改到C#下public delegate void MainEntryMethod();
[DllImport("CygLoad.dll")]
public static extern void CygwinStartUp(MainEntryMethod mainEntry);[STAThread]
static void Main()
{
CygwinStartUp(new MainEntryMethod(ref MainEntry));
}public static void MainEntry()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
编译没问题,但是运行却弹不出Form1。无任何提示,请问是转换过程中出问题了吗?
作者是用VB做的例子如下:Imports System.Runtime.InteropServicesFriend Class Program
' Nested Types
Public Delegate Sub MainEntryMethod()
' Methods
<DllImport("CygLoad.dll")> _
Public Shared Sub CygwinStartUp(ByVal mainEntry As MainEntryMethod)
End Sub <STAThread()> _
Friend Shared Sub Main()
Program.CygwinStartUp(New Program.MainEntryMethod(AddressOf Program.MainEntry))
End Sub Friend Shared Sub MainEntry()Sub MainEntry()
Application.EnableVisualStyles()
Application.SetCompatibleTextRenderingDefault(False)
Application.Run(New MainForm())
End Sub
End Class我修改到C#下public delegate void MainEntryMethod();
[DllImport("CygLoad.dll")]
public static extern void CygwinStartUp(MainEntryMethod mainEntry);[STAThread]
static void Main()
{
CygwinStartUp(new MainEntryMethod(ref MainEntry));
}public static void MainEntry()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
编译没问题,但是运行却弹不出Form1。无任何提示,请问是转换过程中出问题了吗?
解决方案 »
- winfro窗体能不能最小化到快速启动栏中,如何实现啊???
- OleDB 读Excel,Shell顺序问题
- .NET Socket异步通信概念问题
- 怎样读取xml文件的某些节点内容??
- 关于用OLE DB方式把 数据库中数据保存到EXCEL中的问题,诚心求解!!!!
- 我想对其中一列的值进行四舍五入,SQL语句怎么写,帮帮我。。。
- 急需vs.net的msdn!!我搜索了以前这种问题的回答,但无法下载,求求哪位仁兄帮助啊,高分送给.
- 绝对路径和相对路径的区别以及使用
- C#下如何连接远程DB2数据库,最好有实际的例子参考一下
- 控件赋值问题
- TextBox1.Text.Trim()在.cs赋值的问题
- c#实现如图的效果
这句话MainEntryMethod方法是不是要带命名空间?
这一句就不动了,提示如下:
单步执行: 正在逐过程执行不含符号“System.MulticastDelegate.CtorOpened"的方法
另外这个不需要加ref,然后再带上命名空间,这样单步执行看提示信息是什么?
目前我改成这样
CygwinStartUp(new MainEntryMethod(TestCygwin.Program.MainEntry));F10 提示
TestCygwin.vshost.exe(托管) 已加载 “D:\TestCygwin\bin\debug\TestCygwin.exe",符号已加载。然后就没有反应了……
{
MessageBoxA(...)
padding padding;
MessageBoxA
InitCygwin();
MessageBoxA
main();
MessageBoxA
FreeCygwin();
MessageBoxA
}
可惜c不是很好,我先试试他们给出的例子看行不行吧