PHP调用C#写的dll组件,提示Failed to create COM object

PHP调用C#写的dll组件,已注册已加载,但是在PHP上仍然是提示
Failed to create COM object `CodeData.GetData'

求解啊,谢谢了。

C#dll生成,设置修改了以下步骤:

1、在生成(Build)属性里选中“为 COM interop 注册”

2、在签名(signing)属性选中“为程序集签名”;

3、新建一个签名,起个名字;

4、取消勾选使用密码保护密钥文件;

5、修改工程属性文件(AssemblyInfo.cs),确认 [assembly: ComVisible(true)] 。

并且使用Visual Stdio的命令提示符里进行手动注册:

gacutil /i CodeData.dll

regasm CodeData.dll

均提示成功。

PHP环境配置是正常的,

<?php
echo "OK";
try{
$com = new Com("CodeData.GetData");
$result = $com->GetData();
echo $result;
}
catch(Exception $e){
print_r($e->getMessage());
}
$com = null;
?>

这么一段代码,可以输出OK,还有Failed to create COM object `CodeData.GetData'

OKFailed to create COM object `CodeData.GetData': ��Ч���﷨

5个回答

如果注册了,那就要看一下创建对象时为什么失败了。添加一些错误返回信息等

oyljerry
oyljerry 回复洋哥爱猫猫: 你自己写个程序加载一下试试
接近 5 年之前 回复
yushuo19901110
洋哥爱猫猫 或者说,您能给一个能正常运行创建COM object的例子么?我这里最简单的COM object都不能正常使用呢。
接近 5 年之前 回复
yushuo19901110
洋哥爱猫猫 我对php不是太熟,地址栏输入localhost,网页输出就是这些:OKFailed to create COM object `CodeData.GetData': ��Ч���﷨,,,还包括这么些乱码,您说的错误返回信息哪里还能获得么?
接近 5 年之前 回复

如果已经注册了,创建对象时却失败了, 那应该是引用dll出错了

之前写过,成功过。我后来的例子也不知道为什么和楼主一样。

可以确定是,dll组件写的有问题。

如果注册了,那就要看一下创建对象时为什么失败了。添加一些错误返回信息等

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c#写dll,js调用,失败,什么原因?
``` [assembly: ComVisible(true)] // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID [assembly: Guid("9784050c-2a7f-4353-b6d8-054fefb13318")] ``` ``` [ComVisible(true)] [Guid("00FD4417-35B6-4E75-899F-C75CFD03F0AA")] public interface It1 { int add(int a,int b); } [ComVisible(true)] [Guid("27327327-F4E4-4F28-9AB5-F899B49D343A")] [ProgId("ClassLibrary1.Class1")] public class Class1:It1 { public int add(int a,int b) { return a + b; } } ``` ![图片说明](https://img-ask.csdn.net/upload/201911/08/1573217746_326136.png) ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> function test() { var obj = document.getElementById("obj1"); alert(obj.add(1,2)); } </script> </head> <body> <object id="obj1" codeBase="ClassLibrary1.Class1" class="clsid:27327327-F4E4-4F28-9AB5-F899B49D343A"></object> <input type="button" value="test" onclick="test()"/> </body> </html> ``` ![图片说明](https://img-ask.csdn.net/upload/201911/08/1573217828_837434.png) 哪里错了呢??
C#中如何构造一个兼容多种参数类型的类用以传递不同类型的消息?
大家好!设有一个类Hero,现在需在多个不同的Hero实例之间传递消息,为此我的实现方式是:为Hero实现1个专门接收消息的方法OnMessage(),并定义1个专门携带消息的类Telegram。当A要向B发送消息时,把消息内容写在Telegram中,并调用B.OnMessage(Telegram)进行消息传递。 **现在遇到的困难是:当可能发送的消息内容包含多种变量类型(例如,可能是int、string、List<string>、string数组等)时,如何编写代码使得程序更简洁?** 具体请看我目前的实现(代码不够简洁): 1、首先在Hero类中,增加专门接收并处理消息的方法OnMessage() ``` class Hero() { public void OnMessage(Telegram t)//t携带了具体的消息,详见下文 { //t.index标识了应该调用哪个方法处理这条消息,例如: switch(t.index) { case 1: //方法1 case 2: //方法2 } } } ``` 2、其次,定义1个结构体Telegram,专门用来携带具体消息内容,它有2个成员变量:index(标识应调用哪个方法处理本消息)和info(携带具体消息内容) ``` struct Telegram { public int index;//用来标识应调用哪个方法处理本消息,每个index都对应着Hero类中一个具体的处理方法 //注:由于不同的方法对应的参数类型是不同的,例如,方法1的参数是int、方法2的参数是string、方法3的参数是string数组……,所以我的实现方式比较繁琐,如下 public int info_int;//当这条消息打算发给方法1进行处理时,把消息内容赋值给这个变量,其他的info变量不赋值 public string info_string;//当这条消息打算发给方法2进行处理时,把消息内容赋值给这个变量,其他的info变量不赋值 public string[] info_stringArray;//当这条消息打算发给方法3进行处理时,把消息内容赋值给这个变量,其他的info变量不赋值 } ``` 3、因此,OnMessage()的内容实际上是这样的: ``` class Hero() { public void OnMessage(Telegram t) { switch(t.index) { case 1://调用方法1,且参数类型为int func1(t.info_int); break; case 2://调用方法2,且参数类型为string func2(t.info_string); break; case 3://调用方法3,且参数类型为string数组 func3(t.info_stringArray); break; default: } } } ``` **情况描述完毕了,主要想请教的就是:以上Telegram中几个不同的info变量,能否统一成1个变量?** ``` //期望能做到这样的效果: class Hero() { public void OnMessage(Telegram t) { switch(t.index) { case 1: func1(t.info);//该方法的输入参数为int,而且会把t.info当做int进行处理 break; case 2: func2(t.info);//该方法的输入参数为string,而且会把t.info当做string进行处理 break; case 3: func3(t.info);//该方法的输入参数为string数组,而且会把t.info当做string数组进行处理 break; default: } } } ``` 对了,截至目前为止我尝试的思路有以下几种,在此列出也是希望大家能帮忙指点一下(尤其是思路2和思路3是否可行),十分感谢: 1、将info定义为Object,赋值、传参时全部以Object进行操作。但存在问题是:反复的装箱、拆箱操作影响效率(程序运行时消息传递非常频繁)。因此该方案放弃了。 2、将info定义为自定义格式文本或json,传参之后再自行解析。但这块我还没有深入学习,此外担心json转换过程中是否存在类似于Object装箱拆箱影响效率的问题? 3、利用C#的泛型。但这块我学习的也不足,目前的尝试仍然失败了,如下所示 (3.1)定义1个泛型类MsgInfo<T> ``` public class MsgInfo<T> { public T obj; public MsgInfo(T objInput) { this.obj = objInput; } } ``` (3.2)在Telegram中使用它,结果出错了 ``` struct Telegram { public int index; public MsgInfo<T> info;//注:此处是会报错的,因为泛型类在实例化时必须制定变量类型,因此这里是不能写T的,只能写int、string等等 } ``` 由于没有余额了,无法发起悬赏,非常抱歉~
关于python调用C#库的问题
 大家好,我需要用python来调用C#的.dll,一直在研究http://blog.csdn.net/xugangjava/article/details/7202356这篇文章,现在碰到了一个问题,请大家帮忙出出主意,谢谢。  首先是这篇文章中的最末尾,命令行中有一条“d.EncryptMd5('dsaf')”(如图1)。请问这个"d."是从何而来?之前也没有看到任何类例化成了"d"? 图1: ![图片说明](https://img-ask.csdn.net/upload/201604/13/1460562589_893201.png)  其次是我在调用由C# COM生成的.py文件中的方法时,出现了“CoClassBaseClass”类能正常例化,而“DispatchBaseClass”无法正常例化的情况(如图2和图3),请问这是为什么?如何才是正确的调用方法? 图2: ![图片说明](https://img-ask.csdn.net/upload/201604/13/1460562611_990146.png) 图3: ![图片说明](https://img-ask.csdn.net/upload/201604/13/1460562630_687172.png) 以下是用makepy转化C# COM生成的.py: ``` #python# # -*- coding: mbcs -*- # Created by makepy.py version 0.5.01 # By python version 2.7.4 (default, Apr 6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)] # From type library 'testCom.tlb' # On Wed Apr 13 16:58:28 2016 '' makepy_version = '0.5.01' python_version = 0x20704f0 import win32com.client.CLSIDToClass, pythoncom, pywintypes import win32com.client.util from pywintypes import IID from win32com.client import Dispatch # The following 3 lines may need tweaking for the particular server # Candidates are pythoncom.Missing, .Empty and .ArgNotFound defaultNamedOptArg=pythoncom.Empty defaultNamedNotOptArg=pythoncom.Empty defaultUnnamedArg=pythoncom.Empty CLSID = IID('{95A0DC02-9D6B-4A40-A78A-C65357E749F5}') MajorVersion = 1 MinorVersion = 0 LibraryFlags = 8 LCID = 0x0 from win32com.client import DispatchBaseClass class IMyClass(DispatchBaseClass): CLSID = IID('{88DB152F-BC26-43C9-BED0-B6CDE14D85CF}') coclass_clsid = None def Add(self, x=defaultNamedNotOptArg, y=defaultNamedNotOptArg): return self._oleobj_.InvokeTypes(1610743808, LCID, 1, (3, 0), ((3, 1), (3, 1)),x , y) _prop_map_get_ = { } _prop_map_put_ = { } def __iter__(self): "Return a Python iterator for this object" try: ob = self._oleobj_.InvokeTypes(-4,LCID,3,(13, 10),()) except pythoncom.error: raise TypeError("This object does not support enumeration") return win32com.client.util.Iterator(ob, None) class _ComTest(DispatchBaseClass): CLSID = IID('{8069ED53-4C67-3611-BB38-AB9721C851EB}') coclass_clsid = IID('{20CEDF1F-BB34-4D68-B657-3884B6E84C4C}') _prop_map_get_ = { } _prop_map_put_ = { } def __iter__(self): "Return a Python iterator for this object" try: ob = self._oleobj_.InvokeTypes(-4,LCID,3,(13, 10),()) except pythoncom.error: raise TypeError("This object does not support enumeration") return win32com.client.util.Iterator(ob, None) class _Object(DispatchBaseClass): CLSID = IID('{65074F7F-63C0-304E-AF0A-D51741CB4A8D}') coclass_clsid = IID('{20CEDF1F-BB34-4D68-B657-3884B6E84C4C}') def Equals(self, obj=defaultNamedNotOptArg): return self._oleobj_.InvokeTypes(1610743809, LCID, 1, (11, 0), ((12, 1),),obj ) def GetHashCode(self): return self._oleobj_.InvokeTypes(1610743810, LCID, 1, (3, 0), (),) # Result is of type _Type def GetType(self): ret = self._oleobj_.InvokeTypes(1610743811, LCID, 1, (13, 0), (),) if ret is not None: # See if this IUnknown is really an IDispatch try: ret = ret.QueryInterface(pythoncom.IID_IDispatch) except pythoncom.error: return ret ret = Dispatch(ret, u'GetType', '{BCA8B44D-AAD6-3A86-8AB7-03349F4F2DA2}') return ret _prop_map_get_ = { "ToString": (0, 2, (8, 0), (), "ToString", None), } _prop_map_put_ = { } # Default property for this class is 'ToString' def __call__(self): return self._ApplyTypes_(*(0, 2, (8, 0), (), "ToString", None)) def __unicode__(self, *args): try: return unicode(self.__call__(*args)) except pythoncom.com_error: return repr(self) def __str__(self, *args): return str(self.__unicode__(*args)) def __int__(self, *args): return int(self.__call__(*args)) def __iter__(self): "Return a Python iterator for this object" try: ob = self._oleobj_.InvokeTypes(-4,LCID,3,(13, 10),()) except pythoncom.error: raise TypeError("This object does not support enumeration") return win32com.client.util.Iterator(ob, None) from win32com.client import CoClassBaseClass # This CoClass is known by the name 'testCom.ComTest' class ComTest(CoClassBaseClass): # A CoClass CLSID = IID('{20CEDF1F-BB34-4D68-B657-3884B6E84C4C}') coclass_sources = [ ] coclass_interfaces = [ _ComTest, _Object, ] default_interface = _ComTest IMyClass_vtables_dispatch_ = 1 IMyClass_vtables_ = [ (( u'Add' , u'x' , u'y' , u'pRetVal' , ), 1610743808, (1610743808, (), [ (3, 1, None, None) , (3, 1, None, None) , (16387, 10, None, None) , ], 1 , 1 , 4 , 0 , 28 , (3, 0, None, None) , 0 , )), ] _ComTest_vtables_dispatch_ = 1 _ComTest_vtables_ = [ ] _Object_vtables_dispatch_ = 1 _Object_vtables_ = [ (( u'ToString' , u'pRetVal' , ), 0, (0, (), [ (16392, 10, None, None) , ], 1 , 2 , 4 , 0 , 28 , (3, 0, None, None) , 0 , )), (( u'Equals' , u'obj' , u'pRetVal' , ), 1610743809, (1610743809, (), [ (12, 1, None, None) , (16395, 10, None, None) , ], 1 , 1 , 4 , 0 , 32 , (3, 0, None, None) , 0 , )), (( u'GetHashCode' , u'pRetVal' , ), 1610743810, (1610743810, (), [ (16387, 10, None, None) , ], 1 , 1 , 4 , 0 , 36 , (3, 0, None, None) , 0 , )), (( u'GetType' , u'pRetVal' , ), 1610743811, (1610743811, (), [ (16397, 10, None, "IID('{BCA8B44D-AAD6-3A86-8AB7-03349F4F2DA2}')") , ], 1 , 1 , 4 , 0 , 40 , (3, 0, None, None) , 0 , )), ] RecordMap = { } CLSIDToClassMap = { '{20CEDF1F-BB34-4D68-B657-3884B6E84C4C}' : ComTest, '{88DB152F-BC26-43C9-BED0-B6CDE14D85CF}' : IMyClass, '{8069ED53-4C67-3611-BB38-AB9721C851EB}' : _ComTest, '{65074F7F-63C0-304E-AF0A-D51741CB4A8D}' : _Object, } CLSIDToPackageMap = {} win32com.client.CLSIDToClass.RegisterCLSIDsFromDict( CLSIDToClassMap ) VTablesToPackageMap = {} VTablesToClassMap = { '{88DB152F-BC26-43C9-BED0-B6CDE14D85CF}' : 'IMyClass', '{8069ED53-4C67-3611-BB38-AB9721C851EB}' : '_ComTest', '{65074F7F-63C0-304E-AF0A-D51741CB4A8D}' : '_Object', } NamesToIIDMap = { 'IMyClass' : '{88DB152F-BC26-43C9-BED0-B6CDE14D85CF}', '_ComTest' : '{8069ED53-4C67-3611-BB38-AB9721C851EB}', '_Object' : '{65074F7F-63C0-304E-AF0A-D51741CB4A8D}', } ```
一个奇怪的c#客户端 异步事件调用datagridview控件的问题
我的客户端有两个界面,下面就简称为Form1 和Form2。 Form1有一个datagridview控件,需要有的操作就是在控件里循环载入数据库中的数据并清空再下一轮载入数据。 Form2的功能是监听网络请求并如果收到请求告诉Form1开始工作。 然后问题就来了如果 在Form1 中调用这个操作没有任何问题,如果用Form2调用这个操作的方法(这里是用了一个委托事件触发的,而且因为在调用Form中方法的同时还需要保持监听,所以用线程池做成异步来处理)就会返回main主函数抛出一个空指针异常,但是我断点调试没有找到空指针的对象。异常如图: ![图片说明](https://img-ask.csdn.net/upload/201912/13/1576202647_246492.png) ![图片说明](https://img-ask.csdn.net/upload/201912/13/1576202720_799585.png) 然后上错误代码: Form1对控件操作: ``` public void test() { Monitor.Enter(this); try { for (int i = 0; i < 7; i++) { Control.CheckForIllegalCrossThreadCalls = false; string fn = list[i]; OpenDB(fn); //Thread.Sleep(1000); } } finally { Monitor.Exit(this); } } void connectToDB(string fn) { m_dbConnection = new SQLiteConnection("Data Source=" + fn + ";Version=3;"); //m_dbConnection.SetPassword("abc"); m_dbConnection.SetPassword("1234LiaoQiu4321"); m_dbConnection.Open(); } public void OpenDB(string fn) { try { string sql; SQLiteCommand command; connectToDB(fn); sql = @"SELECT * FROM [评分细则] ORDER BY [步骤];"; command = new SQLiteCommand(sql, m_dbConnection); SQLiteDataReader reader = command.ExecuteReader(); dataGridView2.Rows.Clear(); object[] obj = new object[10]; while (reader.Read()) { for (int i = 0; i < 10; ++i) { obj[i] = reader[i]; } dataGridView2.Rows.Add(obj); } reader.Close(); } catch //(Exception ex) { MessageBox.Show("打开失败!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } finally { m_dbConnection.Close(); } } /// <summary> /// 事件订阅 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 其他窗口运行ToolStripMenuItem_Click(object sender, EventArgs e) { Form2 ab = new Form2(); ab.getEvent += test; ab.Show(); } ``` Form2: ``` public delegate void getHandler(); public event getHandler getEvent; private void button1_Click(object sender, EventArgs e) { ThreadPool.QueueUserWorkItem(new WaitCallback(test), new object()); } public void test(object val) { getEvent(); } ``` Form2这里是我写的一个模拟错误调用的demo,因为监听网络调用调式比较麻烦,所以用button模拟触发 收到消息这个动作。考虑过跨线程调用控件的问题,所以已经加了禁用语句。 问题奇怪的地方有三个:1.如果是Form1本身的线程调用,或者Form2中不加异步就不会抛异常;2,调试时发现循环第一次不会出错,也就是会往控件里加载一次数据,但是第N次循环就可能会出现问题,出错的循环次数是哪一次无法确定,但是肯定会有一次出错。3.报错的位置不在调试时卡住的地方而是回到main主函数报错 而且目前找到一种解决办法就是在循环提内加入延迟,就是Thread.Sleep(500),这样也不会报错,但是不理解这样做就不报错的原因
C#通过Socket实现多文件传输
大概需求是客户端发送一个xml文件名给服务器,服务器返回xml文件。这一步没问题。 后面客户端需要解析xml文件,根据解析出的文件名,去服务器获取指定文件。现在问题是第一次服务器发送xml文件之后就侦听不到客户端后面的请求了 服务端代码: ``` #region 窗体加载 private void Form1_Load(object sender, EventArgs e) { Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Socket设置、IPv4、Stream类型套接字、TCP协议 IPAddress ip = IPAddress.Any;//获取本机IP IPEndPoint point = new IPEndPoint(ip, 18002);//设置IP和端口 socketWatch.Bind(point);//绑定端口 memoEdit1.Text = "开始侦听..."; socketWatch.Listen(100);//最大连接数 Thread th = new Thread(SendFileFuncssss);//创建新线程 th.Start(socketWatch);//启动线程 th.IsBackground = true;//设置后台运行线程 } #endregion #region 根据客户端传输文件名发送指定文件 public void SendFileFuncssss(object obj) { Socket socket = obj as Socket; while (true) { Socket socketServices = socket.Accept(); byte[] buffer = new byte[1024]; int num = socketServices.Receive(buffer);//接收到字节数 string str = Encoding.UTF8.GetString(buffer, 1, num - 1);//接收到字符串 if (buffer[0] == 0)//表示接收到的是消息数据 { TxtAddContent(socketServices.RemoteEndPoint + "连接成功"); string FileName = str; if (FileName.Equals("AutoUpdater.xml"))//获取xml配置文件 { //发送XML文件到客户端 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + FileName, FileMode.Open)) { byte[] arrFile = new byte[1024 * 1024 * 5]; int length = fs.Read(arrFile, 0, arrFile.Length); byte[] arrFileSend = new byte[length + 1]; arrFileSend[0] = 1; // 用来表示发送的是xml文件数据 Buffer.BlockCopy(arrFile, 0, arrFileSend, 1, length); socketServices.Send(arrFileSend);// 发送数据到客户端 } } if (!FileName.Equals("AutoUpdater.xml")) { //发送更新文件到客户端 using (FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\FileFolder\\" + FileName, FileMode.Open)) { byte[] arrFile = new byte[1024 * 1024 * 50]; int length = fs.Read(arrFile, 0, arrFile.Length);//获取文件长度 byte[] arrFileSend = new byte[length + 1]; arrFileSend[0] = 1; // 用来表示发送的是xml文件数据 Buffer.BlockCopy(arrFile, 0, arrFileSend, 1, length); socketServices.Send(arrFileSend);// 发送数据到服务端 } } } } } #endregion ``` 客户端代码: ``` Socket socketClient = obj as Socket; socketClient.Connect(ipEndPoint); #region 修改本地文件名称 string Oldpath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater.xml";//修改前名称 string Newpath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater_Back.xml";//修改后名称 if (File.Exists(Oldpath)) { File.Delete(Newpath); File.Move(Oldpath, Newpath);//更改文件名 } #endregion if (socketClient.Connected) { try { TxtReceiveAddContent("连接成功"); //发送链接成功提示 byte[] arrMsg = Encoding.UTF8.GetBytes("AutoUpdater.xml"); byte[] arrSendMsg = new byte[arrMsg.Length + 1];//加一位标识用于表示是文字消息还是文件 arrSendMsg[0] = 0; // 用来表示发送的是消息数据 Buffer.BlockCopy(arrMsg, 0, arrSendMsg, 1, arrMsg.Length); socketClient.Send(arrSendMsg); //获取文件 string dirPath = Application.StartupPath; byte[] buffer = new byte[1024 * 1024 * 5]; int lenght = socketClient.Receive(buffer); if (buffer[0] == 1) { using (FileStream fs = new FileStream(dirPath + "\\AutoUpdater.xml", FileMode.Create)) { fs.Write(buffer, 1, lenght - 1); } TxtReceiveAddContent("配置文件接收成功:AutoUpdater.xml");//追加提示备注 } #region 获取XML里需要更新的文件和需要删除的文件 List<string> updatelist = new List<string>();//需要更新的文件集合 List<string> deletelist = new List<string>();//需要更新的文件集合 //获取历史xml文件更新时间以及更新版本 XDocument Olddocument = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater_Back.xml"); //获取到XML的根元素进行操作 XElement Oldroot = Olddocument.Root; XElement Oldele = Oldroot.Element("UpdateInfo"); //获取旧更新时间标签的值 XElement OldUpdateTime = Oldele.Element("UpdateTime"); //获取旧版本号标签的值 XElement OldVersion = Oldele.Element("Version"); //获取最新xml文件更新时间以及更新版本 XDocument Newdocument = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater.xml"); //获取到XML的根元素进行操作 XElement Newroot = Newdocument.Root; XElement Newele = Newroot.Element("UpdateInfo"); //获取旧更新时间标签的值 XElement NewUpdateTime = Newele.Element("UpdateTime"); //获取旧版本号标签的值 XElement NewVersion = Newele.Element("Version"); if (NewUpdateTime != OldUpdateTime || NewVersion != OldVersion) { //获取需要更新的文件列表 XElement NewUpList = Newroot.Element("UpdateList"); IEnumerable<XElement> UpList = NewUpList.Elements(); foreach (XElement item in UpList) { updatelist.Add(item.Value); } //获取需要删除的文件列表 XElement NewDelList = Newroot.Element("DeleteList"); IEnumerable<XElement> DelList = NewDelList.Elements(); foreach (XElement item in DelList) { deletelist.Add(item.Value); } } #endregion #region 循环获取更新文件 for (int i = 0; i < updatelist.Count; i++) { //发送链接成功提示 byte[] FileName = Encoding.UTF8.GetBytes(updatelist[i]); byte[] SendFileName = new byte[FileName.Length + 1];//加一位标识用于表示是文字消息还是文件 SendFileName[0] = 0; // 用来表示发送的是消息数据 Buffer.BlockCopy(FileName, 0, SendFileName, 1, FileName.Length); socketClient.Send(SendFileName); //获取文件 string FilePath = Application.StartupPath + "\\WebFile"; byte[] bufferByFile = new byte[1024 * 1024 * 50]; int lenghtByFile = socketClient.Receive(bufferByFile); if (bufferByFile[0] == 1) { using (FileStream fs = new FileStream(FilePath + "\\" + updatelist[i], FileMode.Create)) { fs.Write(bufferByFile, 1, lenghtByFile - 1); } TxtReceiveAddContent("文件接收成功:" + updatelist[i]); } } #endregion #region 循环删除指定文件 for (int i = 0; i < deletelist.Count; i++) { try { string path = AppDomain.CurrentDomain.BaseDirectory + "\\WebFile\\" + deletelist[i]; File.Delete(path); TxtReceiveAddContent("删除文件[" + deletelist[i] + "]成功"); } catch (Exception) { TxtReceiveAddContent("删除文件[" + deletelist[i] + "]失败"); continue; } } #endregion } catch (Exception ex) { File.Move(Newpath, Oldpath);//连接失败,还原文件名 MessageBox.Show(ex.ToString()); throw; } ``` 调试在客户端进循环的时候服务端侦听不到了 刚接触socket,多谢大佬们解答
C#调用cxf写的webservice
public static void main(String[] args) { JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); //创建client,wsdlUrl地址格式:业务协同管理平台访问地址+/services/yinHaiBusiness?wsdl Client client = dcf.createClient("http://10.200.30.23:8001/xtpt/services/yinHaiBusiness?wsdl"); HTTPConduit http = (HTTPConduit) client.getConduit(); //设置连接超时参数 HTTPClientPolicy hcp = new HTTPClientPolicy(); hcp.setConnectionTimeout(2000); hcp.setReceiveTimeout(200000); http.setClient(hcp); //参数xml,最外层必须是input节点 String aac002 = "652101196406210414"; String jybh ="Q001"; String nd ="2016"; String aae041 ="200801"; String aae042 ="201706"; String xmlInput="<input><aac002>"+aac002+"</aac002><nd>"+nd+"</nd><aae041>"+aae041+"</aae041><aae042>"+aae042+"</aae042><yac005>"+0123456+"</yac005><jybh>"+jybh+"</jybh></input>"; //设置SOAP头信息 /** AddSoapHeader 构造函数说明:1、协同平台webservice服务命名空间:http://yinhai.com ** 2、接入系统标识 * 3、参数 * 4、参数签名 * 5、服务标识 **/ try{ client.getOutInterceptors().add(new AddSoapHeader("http://yinhai.com","CCB_SelfHelp",xmlInput, RSAUtils.sign(xmlInput,"CCB_SelfHelp.keystore"),"TaService")); //发起调用 Object[] obj= client.invoke("callBusiness", xmlInput); //获取返回结果(XML格式) Object result = obj[0]; System.out.println(result); }catch(Exception e){ System.out.println(e.getMessage()); } } 这个是用java写的调用那个webservice的方法的参考事例,现在我需要用c#来实现,求方法,主要是在c#里如何实现java的getOutInterceptors
c# vs2017 关于周立波的can分析仪 二次开发 大佬救我
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { uint m_devtype = 4;//设备类型号 uint m_devind = 0;//设备索引号 int m_canid = 0;//can口ID ///5.定义初始化CAN的数据类型 struct VCI_INIT_CONFIG { public int AccCode; public int AccMask; public int Reserved; public int Filter; public int Timing0; public int Timing1; public int Mode; } ///2.定义CAN信息帧的数据类型。 struct VCI_CAN_OBJ { public uint ID; public uint TimeStamp; public byte TimeFlag; public byte SendType; public byte RemoteFlag;//是否是远程帧 public byte ExternFlag;//是否是扩展帧 public byte DataLen; public byte []Data; ///Data[8] public byte []Reserved; //Reserved[0] 第0位表示特殊的空行或者高亮帧 Reserved[3] } ///4.定义错误信息的数据类型。 struct VCI_ERR_INFO { public uint ErrCode; public byte []Passive_ErrData;/// Passive_ErrData[3] public byte ArLost_ErrData; } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { VCI_INIT_CONFIG InitConfig = new VCI_INIT_CONFIG(); /* InitConfig.AccCode = 00; InitConfig.AccMask = -1; InitConfig.Filter = 1; InitConfig.Reserved = 0; InitConfig.Mode = 0; InitConfig.Timing0 = 0;//测试.... InitConfig.Timing1 = 20; */ uint a = VCI_CloseDevice(m_devtype, m_devind);//调用DLL uint b = VCI_OpenDevice(m_devtype, m_devind, 0); if (b != 1)//reserverd { MessageBox.Show("打开设备错误" ); return; } if (VCI_InitCAN(3, 0, 0, ref InitConfig) == 1)//canid { if (VCI_StartCAN(3, 0, 0) == 1)//canid { /* VCI_CAN_OBJ vio = new VCI_CAN_OBJ(); vio.DataLen = 8; vio.ExternFlag = 0; vio.RemoteFlag = 0; vio.SendType = 2; vio.ID = 1; vio.data0 = (byte)11; vio.data1 = (byte)11; vio.data2 = (byte)11; vio.data3 = (byte)11; vio.data4 = (byte)11; vio.data5 = (byte)11; vio.data6 = (byte)11; vio.data7 = (byte)11; vio.Reserved0 = 0; vio.Reserved1 = 0; vio.Reserved2 = 0; int smap = VCI_Transmit(3, 0, 0, ref vio, 1); MessageBox.Show(smap.ToString()); */ } } else { MessageBox.Show("初始化错误"); return; } } [DllImport("ControlCAN.dll")] static extern uint VCI_OpenDevice(uint DevType, uint DevIndex, uint Reserved);//Reserved系统保留字段 [DllImport("ControlCAN.dll")] static extern uint VCI_CloseDevice(uint DevType, uint DevIndex); [DllImport("ControlCAN.dll")] static extern int VCI_InitCAN(int Devicetype, int DeviceInd, int CANInd, ref VCI_INIT_CONFIG InitConfig);//初始化指定CAN [DllImport("ControlCAN.dll")] static extern int VCI_StartCAN(int Devicetype, int DeviceInd, int CANInd);//启动CAN [DllImport("ControlCAN.dll")] static extern int VCI_ResetCAN(int Devicetype, int DeviceInd, int CANInd);//复位CAN [DllImport("ControlCAN.dll")] static extern int VCI_Transmit(int Devicetype, int DeviceInd, int CANInd, ref VCI_CAN_OBJ vio, int length);//发送数据 [DllImport("ControlCAN.dll")] static extern int VCI_ReadErrInfo(int Devicetype, int DeviceInd, int CANInd, ref VCI_ERR_INFO errinfo);//接收最后1条错误信息 [DllImport("ControlCAN.dll")] static extern int VCI_Receive(int Devicetype, int DeviceInd, int CANInd, ref VCI_CAN_OBJ vri, int length, int WaitTime);//接收信息 } } 设备打开那边就出错了,有大佬知道为啥吗 ![图片说明](https://img-ask.csdn.net/upload/202001/08/1578469705_478201.png)
求教在我这个教学实例里ES6写法函数和以前写法的结果为何会不同
``` const obj = { _name: '0', get aaa() { console.log('123') return this._name }, set aaa(val) { this._name = val } } console.log("TCL: obj.aaa", obj.aaa) obj.aaa = 2 console.log("TCL: obj", obj) const obj1 = { _name : '2' } Object.defineProperty(obj1,'name',{ get: function(){ return this._name }, set: (val)=>{ this._name = val } // set: function(val){ // this._name = val // } }) Object.defineProperty(obj1,'age',{ value: 19, enumerable: true }) obj1.name = 3 console.log('obj1._name',obj1) for (let i in obj1){ console.log('i',i) } ``` 程序作用是老师给我们讲解如何在ES5实现get和set方法,注意注释部分,我注释掉的代码是可以正确运行的,但是上面的ES6写法的SET却不行,还提示_name从未被使用,我觉得很奇怪,如果成功的话下obj1里的_name的值会被改变
在MATLAB环境下,如何获取三维模型obj格式各个角度下的二维渲染图?
在MATLAB环境下,如何获取三维模型obj格式各个角度下的二维渲染图?
DLL文件包含自己生成的lib文件,编译错误
1. 我先用空项目 添加了lua的文件 生成了 lua.lib文件 2. 我创建了一个MFC_DLL文件 1)在项目->属性->C/C++->附加包含目录里包含了 lua所有.h .c的文件夹 2)在项目->属性->连接器->常规->附加库目录里包含了lua.lib的文件夹 3)在项目->属性->连接器->输入->附加依赖项里输入了lua.lib 我创建的 .h文件的代码 #infndef LUASSSS_H #define LUASSSS_H #include <windows.h> extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" } extern lua_State *L; #endif 我创建的 .cpp文件的代码 #include "StdAfx.h" #include "Luassss.h" lua_State *L = luaL_newstate(); 代码显示无错误 但是编译的时候出现各种错误 请问是我哪里出错了????? 谢谢帮忙 我自己摸索了2天都没搞定 头都大了 error LNK2005: _strstr 已经在 libcmtd.lib(strstr.obj) 中定义 error LNK2005: _strchr 已经在 libcmtd.lib(strchr.obj) 中定义 error LNK2005: _fclose 已经在 libcmtd.lib(fclose.obj) 中定义 error LNK2005: _ferror 已经在 libcmtd.lib(feoferr.obj) 中定义 error LNK2005: _ungetc 已经在 libcmtd.lib(ungetc.obj) 中定义 error LNK2005: ___iob_func 已经在 libcmtd.lib(_file.obj) 中定义 error LNK2005: _fread 已经在 libcmtd.lib(fread.obj) 中定义 error LNK2005: _feof 已经在 libcmtd.lib(feoferr.obj) 中定义 error LNK2005: __errno 已经在 libcmtd.lib(dosmap.obj) 中定义 error LNK2005: _realloc 已经在 libcmtd.lib(dbgrealloc.obj) 中定义 error LNK2005: _free 已经在 libcmtd.lib(dbgfree.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _exit 已经在 libcmtd.lib(crt0dat.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isspace 已经在 libcmtd.lib(_ctype.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strtoul 已经在 libcmtd.lib(strtol.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strtod 已经在 libcmtd.lib(strtod.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _sprintf 已经在 libcmtd.lib(sprintf.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strcspn 已经在 libcmtd.lib(strcspn.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strcoll 已经在 libcmtd.lib(strcoll.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _floor 已经在 libcmtd.lib(_floor_pentium4_.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _iscntrl 已经在 libcmtd.lib(_ctype.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isalnum 已经在 libcmtd.lib(_ctype.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isalpha 已经在 libcmtd.lib(_ctype.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _isdigit 已经在 libcmtd.lib(_ctype.obj) 中定义 1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _localeconv 已经在 libcmtd.lib(lconv.obj) 中定义 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1> 正在创建库 ..\test\testdll.lib 和对象 ..\test\testdll.exp 1>LINK : warning LNK4098: 默认库“MSVCRTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library 1>..\test\testdll.dll : fatal error LNK1169: 找到一个或多个多重定义的符号 1> 1>生成失败。 1> 1>已用时间 00:00:01.05 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
js如何解析后端逗号分隔数据?
JSON数据:想要把inputList中数据赋值到select下拉框中 ``` // 20200207152810 // http://localhost:9090/productAttr/list/2?type=1 { "code": 200, "message": "操作成功", "data": [ { "id": 5, "productAttributeCategoryId": null, "inputList": "背带,哈伦裤,工装裤,阔腿裤,铅笔裤,运动", "name": "款式", "type": 1 }, { "id": 6, "productAttributeCategoryId": null, "inputList": "短裤,七分裤,长裤", "name": "裤长", "type": 1 }, { "id": 7, "productAttributeCategoryId": null, "inputList": "2020上市", "name": "时间", "type": 1 }, { "id": 8, "productAttributeCategoryId": null, "inputList": "时尚潮流", "name": "风格", "type": 1 } ] } ``` 前端代码用jquery遍历的 ``` function putParam(result) { $.each(result.data, function (index, obj) { var test = ' <div class="layui-form-item"> <label class="layui-form-label">' + obj["name"] + '</label>' + ' <div class="layui-input-block" >' + ' <select name="city" lay-verify="required" id="param-select">' + ' <option value="">请选择</option>' + ' <option value="">'+obj["inputList"]+'</option>' + ' </select>' + ' </div></div>'; $('#param-body').append(test); }) } ``` 现在的问题是下拉框中的obj["inputList"]是所有的数据,如何拆分并根据name属性分别赋值?
求助帖!!!ubuntu18.04 安装opencv4.0.0源码无限次出现如下问题
./src/image_opencv.cpp: In function ‘IplImage* image_to_ipl(image)’: ./src/image_opencv.cpp:16:5: error: ‘IPlImage’ was not declared in this scope IPlImage *disp = cvCreateImage(cvSize(im.w,im.h), IPL_DEPTH_8U, im.c); ^~~~~~~~ compilation terminated due to -Wfatal-errors. Makefile:86: recipe for target 'obj/image_opencv.o' failed make: *** [obj/image_opencv.o] Error 1 make: *** Waiting for unfinished jobs.... 但我在src文件夹中的image_opencv.cpp中也引入了#include "opencv2/imgproc/imgproc_c.h" 求助实在不知道怎么办了
malloc与realloc问题(C数据结构)
如下代码所示,关于malloc与realloc出现5处错误: ``` #include <stdio.h> #include <stdlib.h> #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef struct{ int *base; int *top; int stacksize; }SqStack; void InitStack(SqStack S){ S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int)); S.top=S.base; S.stacksize=STACK_INIT_SIZE; }//___________________InitStack_______________________ void Push(SqStack S,int e){ if(S.top==S.base){ S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int)); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top=e; S.top++; } void main(){ SqStack S; InitStack(S); Push (S,5); } ``` SqStack.c D:\VC6\pvc6\COMMON\MSDEV98\BIN\SqStack.c(13) : error C2143: syntax error : missing ')' before ';' D:\VC6\pvc6\COMMON\MSDEV98\BIN\SqStack.c(13) : error C2059: syntax error : ')' D:\VC6\pvc6\COMMON\MSDEV98\BIN\SqStack.c(13) : error C2100: illegal indirection D:\VC6\pvc6\COMMON\MSDEV98\BIN\SqStack.c(20) : error C2143: syntax error : missing ')' before ';' D:\VC6\pvc6\COMMON\MSDEV98\BIN\SqStack.c(20) : error C2143: syntax error : missing ';' before ')' Error executing cl.exe. SqStack.obj - 5 error(s), 0 warning(s) 求大佬解答~~
C# 动态调用webservice 时超时如何处理?
public object ExecWebService(string classname, string methodname, object[] args) { string @namespace = "WebService.webservice"; if (classname == null || classname == "") { classname = this.GetClassName(); } WebClient wc = new WebClient(); Stream stream = wc.OpenRead(this._wsdlUrl + "?WSDL"); //获取服务描述语言(WSDL) ServiceDescription sd = ServiceDescription.Read(stream); //通过直接从 Stream实例加载 XML 来初始化ServiceDescription类的实例。 ServiceDescriptionImporter sdi = new ServiceDescriptionImporter(); sdi.AddServiceDescription(sd, "", ""); CodeNamespace cn = new CodeNamespace(@namespace); //CodeNamespace表示命名空间声明。 //生成客户端代理类代码 CodeCompileUnit ccu = new CodeCompileUnit(); ccu.Namespaces.Add(cn); sdi.Import(cn, ccu); CSharpCodeProvider csc = new CSharpCodeProvider(); //设定编译器的参数 CompilerParameters cplist = new CompilerParameters(); //创建编译器的参数实例 cplist.GenerateExecutable = false; cplist.GenerateInMemory = true; cplist.ReferencedAssemblies.Add("System.dll"); cplist.ReferencedAssemblies.Add("System.XML.dll"); cplist.ReferencedAssemblies.Add("System.Web.Services.dll"); cplist.ReferencedAssemblies.Add("System.Data.dll"); //编译代理类 CompilerResults cr = csc.CompileAssemblyFromDom(cplist, ccu); if (true == cr.Errors.HasErrors) { System.Text.StringBuilder sb = new StringBuilder(); foreach (CompilerError ce in cr.Errors) { sb.Append(ce.ToString()); sb.Append(System.Environment.NewLine); } throw new Exception(sb.ToString()); } //生成代理实例,并调用方法 System.Reflection.Assembly assembly = cr.CompiledAssembly; Type t = assembly.GetType(@namespace + "." + classname, true, true); object obj = Activator.CreateInstance(t); System.Reflection.MethodInfo mi = t.GetMethod(methodname);//MethodInfo 的实例可以通过调用GetMethods或者Type对象或派生自Type的对象的GetMethod方法来获取,还可以通过调用表示泛型方法定义的 MethodInfo 的MakeGenericMethod方法来获取。 return mi.Invoke(obj, args); } 以上代码用于动态调用WebService,其中_wsdlUrl在构造函数中赋url地址值,但是执行时间需要较长的方法时,将引发超时,之前采用直接引用WebService的方式可以设置TimeOut参数,如已有的Web引用名称为DAWebService: DAWebService.DAService WEBService = new DAWebService.DAService(); WEBService.Timeout = 1000000; 但是用动态调用的方式如何设置这个TimeOut值呢?请大神帮助
源程序中使用GDI+时出现无法解析的外部指令,求大佬解答
1>------ 已启动生成: 项目: DecCallBack_Demo, 配置: Debug x64 ------ 1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(368,5): warning MSB8004: Output Directory does not end with a trailing slash. This build instance will add the slash as it is required to allow proper evaluation of the Output Directory. 1> DecCallBack_DemoDlg.cpp 1>DecCallBack_DemoDlg.cpp(374): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(1769): note: 参见“sprintf”的声明 1>DecCallBack_DemoDlg.cpp(375): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: 参见“strncpy”的声明 1>DecCallBack_DemoDlg.cpp(376): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\string.h(346): note: 参见“strncpy”的声明 1>DecCallBack_DemoDlg.cpp(518): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(1769): note: 参见“sprintf”的声明 1>DecCallBack_DemoDlg.cpp(519): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\stdio.h(205): note: 参见“fopen”的声明 1>DecCallBack_DemoDlg.obj : error LNK2019: 无法解析的外部符号 GdiplusStartup,该符号在函数 "protected: virtual int __cdecl CDecCallBack_DemoDlg::OnInitDialog(void)" (?OnInitDialog@CDecCallBack_DemoDlg@@MEAAHXZ) 中被引用 1>gdiplus.lib : warning LNK4272: 库计算机类型“X86”与目标计算机类型“x64”冲突 1>bin/DecCallBack_Demo.exe : fatal error LNK1120: 1 个无法解析的外部命令 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
C#写了一个很简单的程序出现错误 CS1504
------ 已启动生成: 项目: Ch05Ex02, 配置: Debug x86 ------ 错误 CS1504: 源文件“C:\Users\Ji\Desktop\Code\Ch05Ex02\Ch05Ex02\Program.cs”未能打开(“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。”) 编译完成 -- 1 个错误,0 个警告 生成启动时间为 2016/7/25 22:36:16。 GenerateTargetFrameworkMonikerAttribute: 正在跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件相对于输入文件而言都是最新的。 CoreCompile: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:x86 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /errorendlocation /preferreduilang:zh-CN /highentropyva- /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.CSharp.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.DataSetExtensions.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\x86\Debug\Ch05Ex02.exe /target:exe /utf8output Program.cs Properties\AssemblyInfo.cs "C:\Users\Ji\AppData\Local\Temp\.NETFramework,Version=v4.0.AssemblyAttributes.cs" 生成失败。 已用时间 00:00:00.02 ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
C#调用https接口证书验证不通过问题
java通过证书调用https的接口,C#能实现吗?我C#尝试调用,一直报错“ssl通道建立时出现未知错误” package com.jit.szlb.util.client; import java.rmi.RemoteException; import javax.xml.namespace.QName; import javax.xml.rpc.ServiceException; import javax.xml.rpc.encoding.XMLType; import net.sf.json.JSONObject; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class TestClient { public static void main(String[] args) throws ServiceException, RemoteException { String basePath = TestClient.class.getResource("").getPath(); System.setProperty("javax.net.ssl.keyStoreType","pkcs12"); System.setProperty("javax.net.ssl.keyStore",basePath + "anjianshuju.pfx"); System.setProperty("javax.net.ssl.keyStorePassword","11111111"); System.setProperty("javax.net.ssl.trustStoreType","jks"); System.setProperty("javax.net.ssl.trustStore",basePath + "127.0.0.1.jks"); System.setProperty("javax.net.ssl.trustStorePassword","11111111"); Service service=new Service(); Call call=(Call)service.createCall(); call.setTargetEndpointAddress("https://139.215.205.50/iservice/webservice/iservice?wsdl"); call.setSOAPActionURI("http://service.jkfwpt.jit.com/serverService"); call.setUseSOAPAction(true); call.setOperationName(new QName("http://service.jkfwpt.jit.com/", "serverService")); call.setReturnType(XMLType.XSD_STRING); call.addParameter("xtid", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter("fwid", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); call.addParameter("param", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); JSONObject obj = new JSONObject(); obj.put("queryCode", "mg0412kv"); String str = (String)call.invoke(new Object[]{"8a81a7c5576583be01576589ea260001","8a81a7c5576583be01576949f9d80002",""}); System.out.println(str); } }
如何调用dll中类的方法
才学C++,正在研究dll动态调用,调用函数算是明白了,不知道怎么调用dll中类的方法,网上也没找到具体的实现。自己瞎想了一个办法,就是在包含类定义的dll中加一个返回该类实例指针的函数,再通过调用这个函数得到该类的实例指针。可是在调用类的方法时出错,信息如下: 2>ExeProj.obj : error LNK2019: unresolved external symbol "public: void __thiscall ClassA::M(void)" (?M@ClassA@@QAEXXZ) referenced in function _main 2>c:\users\administrator\documents\visual studio 2015\Projects\TestSln\Debug\ExeProj.exe : fatal error LNK1120: 1 unresolved externals dll中类的h文件如下: ``` #pragma once class ClassA { public: void M(); }; ``` dll中cpp文件如下: ``` #include <iostream> #include "ClassA.h" using namespace std; void ClassA::M() { cout << "I am invoked."; } extern "C" _declspec(dllexport) ClassA* CreatClassA() { return new ClassA; } ``` 调用程序cpp文件如下: ``` #include <Windows.h> #include <iostream> #include "../TestSln/ClassA.h" using namespace std; int main() { auto hmod = LoadLibrary("DllProj.dll"); if (hmod == NULL) { cout << "Load dll failed."; FreeLibrary(hmod); return 0; } auto hf = GetProcAddress(hmod, "CreatClassA"); if (hf == NULL) { cout << "Get funtion failed."; FreeLibrary(hmod); return 0; } typedef ClassA* (*pf)(); auto pClass = reinterpret_cast<pf>(hf)(); pClass->M(); FreeLibrary(hmod); delete pClass; return 0; } ``` 请专家指点: 1、调用dll中类的方法 的正确方法如何实现?烦请演示一下代码。 2、我的办法为什么出错?如何修正? 谢谢!
求助:python爬取12306车票信息总是出现错误
最近初学python,进展到网络爬虫部分,尝试自己写一下查票,结果遇到了麻烦 ``` import requests url = 'https://kyfw.12306.cn/otn/leftTicket/queryZ?' \ 'leftTicketDTO.train_date=2020-02-01&' \ 'leftTicketDTO.from_station=SHH&' \ 'leftTicketDTO.to_station=BJP&purpose_codes=ADULT' result=requests.get(url) print(result.json()) ``` 出现的问题如下: ``` Traceback (most recent call last): File "D:/Files/check tickets/123.py", line 7, in <module> print(result.json()) File "D:\Files\python3\lib\site-packages\requests\models.py", line 897, in json return complexjson.loads(self.text, **kwargs) File "D:\Files\python3\lib\json\__init__.py", line 357, in loads return _default_decoder.decode(s) File "D:\Files\python3\lib\json\decoder.py", line 337, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "D:\Files\python3\lib\json\decoder.py", line 355, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) ``` 不知如何解决,求解答,谢谢!
ubuntu UE4 ./GenerateProjectFiles.sh fail
``` ERROR: Unable to instantiate instance of 'BenchmarkToolTarget' object type from compiled assembly 'UE4ProgramRules'. Unreal Build Tool creates an instance of your module's 'Rules' object in order to find out about your module's requirements. The CLR exception details may provide more information: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> UnrealBuildTool.BuildException: GetBuildPlatform: No BuildPlatform found for Linux at UnrealBuildTool.UEBuildPlatform.GetBuildPlatform (UnrealBuildTool.UnrealTargetPlatform InPlatform, System.Boolean bInAllowFailure) [0x0003e] in <419e2fed768047499590e1bf32bd22a2>:0 at UnrealBuildTool.TargetRules..ctor (UnrealBuildTool.TargetInfo Target) [0x002fd] in <419e2fed768047499590e1bf32bd22a2>:0 at BenchmarkToolTarget..ctor (UnrealBuildTool.TargetInfo Target) [0x00000] in <1d1f9db457f54166bfa716e4af014894>:0 at (wrapper managed-to-native) System.Reflection.MonoCMethod.InternalInvoke(System.Reflection.MonoCMethod,object,object[],System.Exception&) at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in <98fac219bd4e453693d76fda7bd96ab0>:0 --- End of inner exception stack trace --- at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00017] in <98fac219bd4e453693d76fda7bd96ab0>:0 at System.Reflection.MonoCMethod.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007a] in <98fac219bd4e453693d76fda7bd96ab0>:0 at System.Reflection.MonoCMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0002f] in <98fac219bd4e453693d76fda7bd96ab0>:0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <98fac219bd4e453693d76fda7bd96ab0>:0 ```
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
相关热词 c# 为空 判断 委托 c#记事本颜色 c# 系统默认声音 js中调用c#方法参数 c#引入dll文件报错 c#根据名称实例化 c#从邮件服务器获取邮件 c# 保存文件夹 c#代码打包引用 c# 压缩效率
立即提问