我正在编写一个例程来使用DynamicMethod从对象中检索值.它适用于大多数数据类型,但DateTime.Ticks除外,它是int64
在以下测试应用程序中.我使用MethodInfo和DynamicMethod,methodInfo返回正确的值,但DynamicMethod不返回.有任何想法吗?
using System;
using System.Reflection;
using System.Reflection.Emit;
namespace ConsoleApplication2
{
public delegate object MemberGetDelegate(object obj);
class Program
{
static void Main(string[] args)
{
DateTime dat = DateTime.Today;
PropertyInfo pi = typeof(DateTime).GetProperty("Ticks");
MethodInfo mi = pi.GetGetMethod();
Type type = pi.PropertyType;
object ticks = mi.Invoke(dat, new object[] { });
Console.WriteLine("Get by MethodInfo " + ticks.ToString());
MemberGetDelegate mget=TypeUtils.GetMemberFunc(pi);
object ret = mget(dat);
Console.WriteLine("Get by DynamicMethod " + ret.ToString());
Console.Read();
}
}
static class TypeUtils
{
public static readonly Type objectType = typeof(object); …Run Code Online (Sandbox Code Playgroud) 我尝试使用此片段在Windows 7上绑定Java 1.6中的IPv6服务器套接字:
ssock = ServerSocketChannel.open();
ServerSocket sock = ssock.socket();
sock.bind(new InetSocketAddress(InetAddress.getByAddress(new byte[16]), 0));
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会因IOException而失败:协议族不支持的地址族:bind
我知道Java的编写假设Windows使用单独的v4和v6堆栈(即使Windows 7没有),因此绑定v4和v6的单个套接字也无法工作.但是,这不是我想要做的:我只想将v6套接字绑定到任何地址(即::).
编辑:Vista上也失败了.
我究竟做错了什么?
我需要将一组符号从一个DLL转发到另一个DLL(如果你想知道的话,支持一些版本控制方案,PEP 384).它适用于各种功能; 我写了一个模块定义文件,说
LIBRARY "python3"
EXPORTS
PyArg_Parse=python32.PyArg_Parse
PyArg_ParseTuple=python32.PyArg_ParseTuple
PyArg_ParseTupleAndKeywords=python32.PyArg_ParseTupleAndKeywords
[...]
Run Code Online (Sandbox Code Playgroud)
但是,数据失败了.如果我说
PyBaseObject_Type=python32.PyBaseObject_Type
Run Code Online (Sandbox Code Playgroud)
然后链接器抱怨PyBaseObject_Type是一个未解析的符号,即使它实际上是从python32.dll导出的.看一下导入库,我注意到,对于数据,只有_imp__符号,所以我试过了
PyBaseObject_Type=python32._imp__PyBaseObject_Type
Run Code Online (Sandbox Code Playgroud)
链接器现在实际上创建了一个DLL,但是,在此DLL中,转发转到_imp__符号,然后在运行时无法解析.我也尝试将DATA放入线路(有或没有_imp__); 这没有什么区别.
IIUC,转发数据应该可以正常工作,因为数据是__declspec(dllimport)针对DLL的任何导入器声明的,因此编译器应该正确解释引用.
那么:我如何生成一个执行数据转发的DLL?
我正在开发一个xmlrpc服务器,它必须周期性地执行某些任务.我使用twisted作为xmlrpc服务的核心,但我遇到了一个小问题:
class cemeteryRPC(xmlrpc.XMLRPC):
def __init__(self, dic):
xmlrpc.XMLRPC.__init__(self)
def xmlrpc_foo(self):
return 1
def cycle(self):
print "Hello"
time.sleep(3)
class cemeteryM( base ):
def __init__(self, dic): # dic is for cemetery
multiprocessing.Process.__init__(self)
self.cemRPC = cemeteryRPC()
def run(self):
# Start reactor on a second process
reactor.listenTCP( c.PORT_XMLRPC, server.Site( self.cemRPC ) )
p = multiprocessing.Process( target=reactor.run )
p.start()
while not self.exit.is_set():
self.cemRPC.cycle()
#p.join()
if __name__ == "__main__":
import errno
test = cemeteryM()
test.start()
# trying new method
notintr = False
while not notintr:
try:
test.join() …Run Code Online (Sandbox Code Playgroud) 编写用于实现线程库的代码是内核代码的一部分吗?pthread_create()等函数的实现是内核的一部分吗?
我想从TCP流中读取一个字符串,该字符串长度后跟实际数据.在Python中,我会这样做
length = ord(stream.read(1))
data = stream.read(length)
Run Code Online (Sandbox Code Playgroud)
我如何在Java NIO中做同样的事情?我有一个缓冲区(容量257)
stream.read(buffer); // cannot specify a size here
int length = buffer.get();
byte[] data = new byte[length];
buffer.get(data);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这并不工作:的get()调用read 过去在缓冲区中的数据:-(
我可能需要翻转,倒带,重置等组合,但我无法弄明白.
Microsoft有一个扩展,可以声明模板实例化是外部的; 因此,它不会被隐式实例化.至少那是理论.我尝试用代码再现它
#include <vector>
class Foo{
int i;
public:
virtual ~Foo();
};
extern template class std::vector<Foo>;
Run Code Online (Sandbox Code Playgroud)
这给了我
warning C4231: nonstandard extension used : 'extern' before template
explicit instantiation
Run Code Online (Sandbox Code Playgroud)
然而,似乎没有其他事情发生:程序继续链接find,即使我使用push_back(并且dumpbin显示push_back被实例化).
只有当我宣布
extern template void std::vector<Foo>::push_back(const Foo&);
Run Code Online (Sandbox Code Playgroud)
我按预期得到链接器错误.
那么:我如何将整个实例化(所有成员)声明为显式,以防止隐式实例化?
如何在C ++中发出HTTP Json请求?有图书馆吗?在“ HTTP Json请求”下,我的意思是使用Json对象作为数据进行POST,并以Json接收结果。
对于WinRT,IDL现在支持如下构造:
[marshaling_behavior(agile)]
[threading(both)]
[activatable(0x06020000)]
[version(0x06020000)]
[static(Windows.Networking.Sockets.IDatagramSocketStatics, 0x06020000)]
runtimeclass DatagramSocket
{
[default] interface Windows.Networking.Sockets.IDatagramSocket;
interface Windows.Foundation.IClosable;
}
Run Code Online (Sandbox Code Playgroud)
我对这个static属性感到好奇.这是什么意思?它如何与主体内部列出的接口相关runtimeclass?