我有一个相当大的项目,包含大量链接依赖项.问题是,有一个依赖关系被链接到使用VS 2005编译并链接到vc80调试crt,而我已迁移到VS 2008.问题是这也意味着我必须安装vc80 debug crt,因为我不再使用VS 2005,所以我宁愿避免这些事情.我希望能够找到罪魁祸首并避免从头开始重新编译整个项目和所有依赖项,因此,是否有一种方便的方法可以找出哪个依赖项链接到vc80 debug crt?
我正在努力通过编译器: Abdulaziz Ghuloum的后端到前端(并再次回到前面).它似乎缩写为完整课程/研讨会中的预期,所以我试图自己填写这些内容.
例如,我试图在DrScheme的R5RS风格中使用他的测试框架,但它似乎不喜欢宏的东西:
src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
Run Code Online (Sandbox Code Playgroud)
我已经阅读了他关于课程的介绍文章,编译器构建的增量方法,它对所使用的技术进行了很好的概述,并提到了一些可能需要为"额外信用"实现的功能的方案,但他没有没有提到他在课程中使用的计划.
更新
我还在深入研究原始问题(调查以下Eli建议的Petit Scheme等选项),但发现了一个与Gholoum工作有关的有趣链接,所以我将其包括在内.
[Ikarus Scheme](http://en.wikipedia.org/wiki/Ikarus_ (Scheme_implementation ))是Ghuloum的想法的实际实现,并且似乎是他的博士学位的一部分.工作.它应该是R6RS的首批实现之一.我现在正在尝试安装Ikarus,但是配置脚本不想识别我的系统安装的libgmp.so,所以我的问题仍未得到解决.
例
以下示例似乎适用于使用Pretty Big在DrEd中运行的PLT 2.4.2
(require lang/plt-pretty-big)
(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm")
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm")
(define (emit-program x)
(unless (integer? x) (error "---"))
(emit " .text")
(emit " .globl scheme_entry")
(emit " .type scheme_entry, @function")
(emit "scheme_entry:")
(emit " movl $~s, %eax" x)
(emit " ret")
)
Run Code Online (Sandbox Code Playgroud)
尝试用#lang方案替换require指令会导致错误消息
foo.scm:7:3: expand: …Run Code Online (Sandbox Code Playgroud) 我正在为一些C++代码编写一些SWIG/Python绑定.这是所谓的Kinect的意外API,我有电机和LED功能的工作.解析和填充RGB和深度缓冲区的Listener类的回调似乎不会从SWIG调用.数据捕获线程显然已启动并开始占用CPU,但回调中没有调试行通过.什么是更好的方法来填充数据缓冲区并从python轻松访问它们?
class KinectListener
{
public:
virtual ~KinectListener(){};
virtual void KinectDisconnected(Kinect *K) {};
virtual void DepthReceived(Kinect *K) {};
virtual void ColorReceived(Kinect *K) {};
virtual void AudioReceived(Kinect *K) {};
};
Run Code Online (Sandbox Code Playgroud)
这是带有虚方法的监听器类,这个类的Python包装版本可以用来继承c ++类的监听器吗?我在C++中添加了一个最小的监听器,现在剩下的工作是使用类型映射有效地访问数组.目前我正在使用这个天真的类型图
%typemap(out) unsigned short [ANY] {
int i;
$result = PyList_New($1_dim0);
for (i = 0; i < $1_dim0; i++) {
PyObject *o = PyInt_FromLong((long)$1[i]);
PyList_SetItem($result,i,o);
}
}
Run Code Online (Sandbox Code Playgroud)
更好的选择?
我有一段时间没有做过任何C++,但决定完成一个我正在为某人工作的大项目.我现在收到以下错误消息但...
HEAP CORRUPTION DETECTED:在正常阻止(#1761)之后在0x17DEB940.CRT检测到应用程序在堆缓冲区结束后写入内存.
我一直在踩过我认为可能导致它的所有功能,但我不知所措.有没有办法使用更高级的调试功能来追捕它?
在各种c ++代码中,您经常会看到字符串的不同用法:PWSTR,char*,std :: string,CString等...
与其他任何字符串类型相比,何时是使用PWSTR的最佳时间?
我正在研究基于Qt的产品套件.我看到使用受祝福的IDE,Qt Creator的优点,所以我想将它包含在我的工作流程中.
我想做的事情,我习惯于从emacs,简单的键绑定没有帮助(宏出现).
有没有办法用当前文档的文本生成emacs实例,然后将编辑后的结果传回Qt Creator?
好的.....我已经完成了相关问题的所有阅读,以及一些MSDN文章,以及大约一天的谷歌搜索.
这个问题的当前"最新状态"回答是什么:
我正在使用VS 2008,C++非托管代码.我有一个包含相当多DLL和很多EXE的解决方案文件.只要我完全控制构建环境,使得所有的部件和部件都使用相同的标志构建,并使用相同的运行时库,并且没有人拥有静态链接的CRT库,我可以传递STL对象吗?
看起来这应该没问题,但根据您阅读的文章,有很多恐惧,不确定性和怀疑.
我知道在幕后产生静态数据的模板有各种各样的问题(每个dll都会得到自己的副本,导致心痛),但是常规旧STL怎么样?
我正在创建一个IStream如下:
IStream* stream;
result = CreateStreamOnHGlobal(0, TRUE, &stream);
Run Code Online (Sandbox Code Playgroud)
然后我有一个CImage对象,我保存到此流:
image->Save(stream, Gdiplus::ImageFormatBMP);
Run Code Online (Sandbox Code Playgroud)
我需要获取写入此IStream的字节大小.
我怎样才能做到这一点?
在IStream中没有长度或类似的东西......
谢谢!
我在日常工作中不使用Tcl.但是,我有一位同事偶尔会与希望我们工具的扩展语言更像Tcl(!)的客户进行交互.他提出的一个主题是Tcl如何让他通过全局变量tcl_precision 设置存储在double中的精度.
我做了一些网络搜索,我发现的文档肯定似乎是这种情况(而不仅仅是设置打印精度).然而,看起来好像tcl_precision有一个方格的历史.我得到的印象是它完全被移除一个或两个版本,然后放回去,但有关于覆盖默认值0的警告和tut-tuts,这实际上意味着17(手册承诺足以代表任何IEEE 754双).
那么有谁可以告诉我更多关于tcl_precision 实际承诺做什么,以及它对双重覆盖的双打有什么影响?它只是打印数字的全局设置,还是实际上截断了存储的数字精度(这对我来说似乎很危险)?