C_Sharp 板


LINE

→ percyy:嗯...什麽意思? @@" 如果这程式有问题的话, 应该在runtime会有exception呀? DllImport 不到进入点, 应该会有找不到进入点的exception, calling converntion或参数大小不到, 应该会告诉你 stack 烂掉 的excetion callback function pointer有误, C/C++端呼叫时说不定会直接当掉.. 或是 delegate 被GC回收了, 在debug环境下, 应该也会有exception 如果你什麽 exception都没收到, 要不是被你自己catch起来和谐掉了, 就是C/C++那边根本没有呼叫该callback 推 cplusplus:基本上 unmanaged C++ 不能直接call C#的method... 这确定可以呼叫 @.@ 举个例子, 用 CreateThread() Windows API 来 create thraed, 而非使用 .NET 的 Thread Class -- /* * 这理是 p/invoke 相关的宣告 */ delegate Int32 ThreadStartDelegate(IntPtr arg); [DllImport("kernel32.dll")] static extern IntPtr CreateThread( IntPtr SecurityAttributes, uint StackSize, ThreadStartDelegate StartFunction, IntPtr ThreadParameter, uint CreationFlags, out uint ThreadId); /* * 这里是使用该 p/invoke 的 code */ // CreateThread 在 .NET 的 callback Int32 MyThread(IntPtr arg) { Console.WriteLine("Hello World"); } // 呼叫 CreateThread int tid; IntPtr h; ThreadStartDelegate td = new ThreadStartDelegate(MyThread); h = CreateThread(IntPtr.Zero, 0, td, IntPtr.Zero, 0, out tid); // 这里应该还要放个 WaitForSingleObject 等 Thread 结束.... GC.KeepAlive(td); --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 123.204.66.43
1F:→ percyy:无任何exception 我也没处理 倾向於callback函式没被执行到 09/16 23:32
2F:推 percyy:BTW, 我的平台是 Vista 64 Enterprise、Visual Studio 2008 09/16 23:35
3F:推 percyy:DLL的函式的回传值也正常 但就是没有callbak函式 09/16 23:41
4F:→ cole945:所以你的环境是64bit? 试试看在project设定中的Built-> 09/16 23:41
5F:→ cole945:platform target设成x86呢? 09/16 23:42
6F:推 percyy:我已经设了~ 有设才能 import 32-bit 的 DLL 09/17 00:44
7F:推 percyy:为什麽CreatThread第三个参数是丢null而不是td呢? 09/17 00:51
8F:→ percyy:(不好意思 我对 Windows API 不是很了解 ^^") 09/17 00:52
9F:→ cole945:因为我写错了...是丢td XD 09/17 01:03
※ 编辑: cole945 来自: 123.204.66.43 (09/17 01:03)
10F:→ cole945:感谢提醒, 我大E修正了~ 09/17 01:03
11F:推 percyy:所以照理说 透过delegate C/C++可以回呼C# 结果我的只肯 09/17 15:45
12F:→ percyy:吃long 变得不知该怎麽办 问问券商能否提供里面的资讯 09/17 15:45
13F:→ cole945:应该不会是long的问题@@ 因为delegate本来就会被marsah成 09/17 16:41
14F:→ cole945:function pointer, 而在.NET, pointer的size视平台而异, 09/17 16:41
15F:→ cole945:在x86-32, 其实也就是32bit, 与你在C/C++的long是一样的.. 09/17 16:41
16F:→ cole945:若有问题的话,应该会有runtime错误. 若都没出现, 应该比较 09/17 16:43
17F:→ cole945:像根本没呼叫到吧@@" 09/17 16:43
18F:推 cplusplus:原来直接传delegate? @@ 我找不到把delegate转成long的 09/29 14:25
19F:→ cplusplus:方法 @@ 所以原PO的方式不能搞 不过的确可以回乎m(_ _)m 09/29 14:27
20F:推 percyy:所以说 就算 delegate 转成 IntPtr 也不能相容於 long 吗? 10/01 08:52
21F:推 cplusplus:楼上,我本来以为delegate会内含一个IntPtr的member 10/03 01:41
22F:→ cplusplus:结果找了一找,没有...@@ 不像winform里面有handle... 10/03 01:42
23F:→ cplusplus:然後也找不到转换的方法 所以我当初觉得没有 10/03 01:42







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP