程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> .Net平台互操作技術:03. 技術驗證

.Net平台互操作技術:03. 技術驗證

編輯:C++入門知識

上面兩篇文章分別介紹了.Net平台互操作技術面臨的問題,並重點介紹了通過P/Invoke調用Native C++類庫的技術實現。光說不做是假把式,本文筆者將設計實驗來證明P/Invoke調用技術的可行性。

1 實驗方案

通過上述分析,調用Native C++類庫的方式將采用平台調用技術(P\Invoke),整體方案可以用下圖表示:

3 實驗結果與分析

3.1 實驗結果

通過實驗,可以得出結論:C#調用C++ Library是可行的,並且在Native C++環境和C#環境之間完全可以傳遞內存數據塊,並能正確的解析。實驗結果的截圖如下:

clip_image002

3.2 潛在風險

C#調用Native C++類庫只需驗證C#語言可以操縱內存,就可以通過C#語言調用Native C++ Library的函數。實驗已經證明:通過unsafe和fixed關鍵字可以實現C#操縱內存,且通過Import C++ Dll,C#可以調用C++的函數。然而,在實際調用Native C++庫時,因為實際數據結構的復雜性,將會有一些新的問題出現。

4 參考資料

1. 黃際洲 崔曉源 精通.Net互操作P\Invoke, C++ Interop和COM Interop

2. http://msdn.microsoft.com/zh-cn/library/aa686045.aspx

3. http://www.cnblogs.com/xumingming/archive/2008/10/10/1308248.html

4. http://www.cnblogs.com/Jianchidaodi/archive/2009/03/09/1407270.html

5. http://www.jb51.net/article/23074.htm

6. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/02/16/net-to-c-bridge.aspx

7. http://msdn.microsoft.com/zh-cn/library/ms228628

8. http://blog.csdn.net/zhangzxy161723/archive/2009/04/28/4132853.aspx

9. http://hi.baidu.com/linzi1128/blog/item/dda5371fa7fa40cea6866946.html

10. http://blog.csdn.net/jadeflute/archive/2010/06/23/5689502.aspx

11. http://blog.csdn.net/null1/archive/2009/03/03/3953155.aspx

12. http://msdn.microsoft.com/en-us/library/eyzhw3s8(VS.80).aspx

13. http://www.cnblogs.com/suyang/archive/2008/03/06/1093827.html

14. http://ondotnet.com/pub/a/dotnet/2003/03/03/mcppp2.html

15. http://ondotnet.com/pub/a/dotnet/2003/01/13/intromcpp.html

16. http://ondotnet.com/pub/a/dotnet/2004/03/29/mcpp_part3.html

17. http://www.codeproject.com/KB/mcpp/cpptomancpp.aspx

18. http://blog.csdn.net/yingzai621/archive/2010/02/01/5278316.aspx

19. http://www.pinvoke.net/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved