我在C中为驱动程序开发了一个DLL.我用C++编写了一个测试程序,DLL运行正常.
现在我想使用Python来处理这个DLL.我已成功隐藏了大多数用户定义的C结构,但有一点我必须使用C结构.我对python很新,所以我可能会弄错.
我的方法是使用ctype在python中重新定义一些结构,然后将变量传递给我的DLL.但是在这些类中,我有一个自定义链表,其中包含递归类型,如下所示
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", EthercatDatagram)]
Run Code Online (Sandbox Code Playgroud)
这失败了,因为在EthercatDatagram中,尚未定义EthercatDatagram,因此解析器返回错误.
我应该如何在python中表示这个链表,以便我的DLL能够正确理解它?
我正在尝试远程调试在arm9上运行的应用程序
到目前为止,我已经能够在我的设备上交叉编译和执行gdbserver.
gdbserver"似乎"正确启动并将自己附加到我的helloworld应用程序
当我尝试gdb到远程服务器时,我得到
"警告:无法解析XML目标描述;在编译时禁用了XML支持"
显然,汇编没有考虑到外籍人士.我真的不确定如何指定配置脚本的expat库路径.
我不得不写一个简单的垃圾邮件过滤器,我不确定我将如何去做.
到目前为止,我已经提出了wordlist和域过滤,它将提供或删除高达某个阈值的点.
例如,如果您正在从列入黑名单的域名撰写"v1agr4",那么垃圾邮件将获得2分,但如果您从hotmail.com帐户撰写"v1agr4",则只能获得1分"垃圾点".
你们有其他任何建议/资源吗?
这更像是学习垃圾邮件过滤器而不是开发企业级别的东西
我正在使用MyTableGrid在我的网页中显示类似Excel的控件.
对于表1,第0列,第2行,使用类似"mtgIC1_0,2"的ID引用单元格.
不幸的是,当我尝试使用带有此id的jQuery选择器时$("#mtgIC1_0,2"),它永远不会起作用.
我认为这是因为","因为它适用于没有昏迷的页面中的任何其他ID.
我正在尝试在Windows 7中的新环境下从Windows XP编译遗留代码.它在运行时编译但失败.
CreateProcess()返回0,GetLastError()返回2,代表ERROR_FILE_NOT_FOUND
这是我对CreateProcess的调用
STARTUPINFO StartInfo;
memset(&StartInfo, 0, sizeof(StartInfo));
wcsncpy(astrCommandLine, L"TFTP", MAX_OSCOMMANDLINE_SZ-1);
BOOL bFuncRetn = CreateProcess(NULL,
astrCommandLine, // command line
NULL, // process security attributes
NULL, // primary thread security attributes
NULL, // handles are inherited
0, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&StartInfo, // STARTUPINFO pointer
&m_ProcInfo ); // receives PROCESS_INFORMATION
Run Code Online (Sandbox Code Playgroud)
现在为了奇怪:当我运行calc而不是tftp时,calc会弹出.我可以从命令提示符中的任何位置执行命令行中的任何内容,因此它告诉我%PATH%到c:\ windows\system32已知且工作正常.
我试图用ansi字符串强制CreateProcessA,但我得到了相同的结果.我也尝试过调试和发布配置以及命令行.
任何的想法?
编辑:calc.exe和tftp.exe都位于系统路径中的c:\ windows\system32中.
运行"c:\ windows\system32\tftp"不起作用
我正在使用boost测试框架1.47而且我在测试异常时遇到了困难
这是我的异常课程
class VideoCaptureException : public std::exception
{
std::string m_Description;
public:
VideoCaptureException(const char* description)
{
m_Description = std::string(description);
}
VideoCaptureException(const std::string& description)
{
m_Description = description;
}
virtual ~VideoCaptureException() throw() {}
virtual const char* what() const throw()
{
return m_Description.c_str();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试只是抛出此异常的代码
BOOST_CHECK_THROW( source.StopCapture(), VideoCaptureException )
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它不起作用.
unknown location(0): fatal error in "testVideoCaptureSource": unknown type
testVideoCaptureSource.cpp(28): last checkpoint
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
我使用 qmake (Qt 4.5.1) 创建 vcproj 文件。我想为输出 vcproj 创建自定义过滤器,这样并非每个 *.h 文件都出现在“头文件”过滤器中,*.cpp 出现在“源文件”等中。
例如,包含文件的项目
foo\foo.h
foo\foo.cpp
bar\bar.h
bar\bar.cpp
Run Code Online (Sandbox Code Playgroud)
应该有一个 vcproj 文件
foo
foo.h
foo.cpp
bar
bar.h
bar.cpp
Run Code Online (Sandbox Code Playgroud)
代替
Header Files
bar.h
bar.cpp
Source Files
bar.cpp
foo.cpp
Run Code Online (Sandbox Code Playgroud)
谢谢!
这可能已被多次询问,但在这里:
我有一个充满数据库连接的类
打开连接
查询db
读取值
关闭连接
我该如何对这些东西进行单元测试?
我需要创建一个假数据库吗?我想我可以模拟MySql类(对于c#),但这也是很多工作.
有些陈述是"INSERT INTO",我该怎么办呢?
我在TI Davinci dm365板上构建了带有Linux内核的摄像机.
该主板支持RNDIS驱动程序,因此我的相机可以在Windows中"即插即用".这是某种"USB以太网"网络适配器.
Windows加载RNDIS驱动程序usb8023.sys以与我的硬件进行交互.
当我插入多个摄像头时,地狱会松动,我会遇到很多问题,有时我的所有USB端口都会停止工作,但大多数时候,两个摄像头中的一个停止工作.
我已经尝试导入旧的驱动程序,复制usb8023.sys并为每个凸轮加载一个单独的驱动程序,没有运气.我检查并仔细检查了我的IP设置.
我正在尝试编写自我修改的 asm 代码。
在某些时候,我尝试以下操作:(NASM 编译器)
start_of_code:
; ... snip ...
cmp byte [rax], 0x66
jae above_label
add byte[rax], 0x20
; ... snip ...
above_label:
inc rax
loop start_of_code
Run Code Online (Sandbox Code Playgroud)
gdb 在开始时显示以下值x/8xb $rax:
0x12 0x12 0x11 0x20 0x18 0xfe 0x83 0x9b
Run Code Online (Sandbox Code Playgroud)
前两次迭代没问题,0x12按照我的预期进行比较,没有发生跳转。随着0x11然而,cmp设置OF代替标志CF 和jae执行
目前我有 2 个猜测,要么 gdb 没有首先报告正确的内存位置,0x9b 实际上是被比较的地址,或者其他地方。这似乎不太可能,因为添加似乎像我期望的那样工作。
或者这可能是对齐问题。在 cmp 之前添加 NOP 指令似乎会以某种方式影响结果。我真的不知道为什么
编辑:当我尝试
mov bl, byte [rax]
Run Code Online (Sandbox Code Playgroud)
bl 得到 0xcc
这对我来说没有意义。gdb 不报告任何0xcc附近的任何值[rax]
c++ ×2
windows ×2
assembly ×1
boost ×1
breakpoints ×1
c# ×1
compilation ×1
configure ×1
ctypes ×1
database ×1
davinci ×1
debugging ×1
dll ×1
drivers ×1
email-spam ×1
exception ×1
gdb ×1
gnu ×1
java ×1
javascript ×1
jquery ×1
python ×1
qmake ×1
qt ×1
qt4 ×1
recursion ×1
rndis ×1
structure ×1
testing ×1
unit-testing ×1
x86-64 ×1