python中调用 C#动态链接库问题记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中调用 C#动态链接库问题记录相关的知识,希望对你有一定的参考价值。

参考技术A 程序[摘自 https://blog.csdn.net/LTG01/article/details/80700513 ] 
import clr
clr.FindAssembly("PythonNetTest.dll") ## 加载c#dll文件
from PythonNetTest import * # 导入命名空间
instance = Class1() #class1是dll里面的类
print(instance.AddShort(2, 3))#一个简单的加法
instance.ShowForm()

【1】报错: AttributeError: 'module' object has no attribute 'FindAssembly'
错误原因:
python存在 clr 模块,python的pythonnet模块中,也存在clr,在import 过程中,
要用的是后者中的clr,因此要利用 pip uninstall clr
把clr模块卸载掉,再运行上面的程序就可以了。
【2】 报错: name "PythonNetTest" has not found
错误原因:
未将PythonNetTest.dll与.py程序,放在同一个目录下,放在同一个目录下即可。

C# 调用动态链接库,给游览器写入Cookie

给游览器写入Cookie

  1. class Program {
  2. /// <summary>
  3. /// 写
  4. /// </summary>
  5. /// <param name="lpszUrlName"></param>
  6. /// <param name="lbszCookieName"></param>
  7. /// <param name="lpszCookieData"></param>
  8. /// <returns></returns>
  9. [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
  10. public static extern bool InternetSetCookie ( string lpszUrlName, string lbszCookieName, string lpszCookieData );
  11. /// <summary>
  12. /// 读
  13. /// </summary>
  14. /// <param name="lpszUrlName"></param>
  15. /// <param name="lbszCookieName"></param>
  16. /// <param name="lpszCookieData"></param>
  17. /// <param name="lpdwSize"></param>
  18. /// <returns></returns>
  19. [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
  20. public static extern bool InternetGetCookie ( string lpszUrlName, string lbszCookieName, StringBuilder lpszCookieData, ref int lpdwSize );
  21. /// <summary>
  22. /// 异常
  23. /// </summary>
  24. /// <returns></returns>
  25. [DllImport("kernel32.dll")]
  26. public static extern Int32 GetLastError ();
  27. static void Main ( string[] args ) {
  28. System.Diagnostics.Process.Start("IEXPLORE.EXE", "http://172.16.5.63:8088/ws?uname=122");
  29. System.Threading.Thread.Sleep(1000 * 10);
  30. //System.Diagnostics.Process.Start("http://172.16.5.63:8088/ws?uname=122");
  31. if ( !InternetSetCookie("http://172.16.5.63:8088", "Test", DateTime.Now + ";expires=Sun,22-Feb-2099 00:00:00 GMT") )
  32. {
  33. Console.WriteLine("错误消息:", GetLastError().ToString());
  34. }
  35. StringBuilder cookie = new StringBuilder(new String(‘ ‘, 2048));
  36. int datasize = cookie.Length;
  37. if ( !InternetGetCookie("http://172.16.5.63:8088", "Test", cookie, ref datasize) )
  38. {
  39. Console.WriteLine(GetLastError().ToString());
  40. }
  41. Console.WriteLine(cookie.ToString(), datasize);
  42. Console.ReadLine();
  43. }
  44. }

以上是关于python中调用 C#动态链接库问题记录的主要内容,如果未能解决你的问题,请参考以下文章

C#总结动态加载C++动态链接库

C#调用C++语言编写的动态链接库

[转载:]C#与Fortran混合编程之本地调用Fortran动态链接库

VB中调用Class(类模块)及调用DLL(动态链接库)问题

C# 调用动态链接库读取二代身份证信息

P/Invoke之C#调用动态链接库DLL