我想在OSX上构建一个VST插件.我可以很好地编译它,但VST主机(Cubase Essential 4)在尝试加载它时总是崩溃或者报告插件被某种程度上破坏了.
可能,这是因为我遗漏了VST捆绑的一些成分.
需要在XCode中设置哪些首选项以及必须将哪些内容放入捆绑包才能使其工作?或者甚至有一个样本项目?
先感谢您
我有一个叫做的课AString.这是非常基本的:
class AString
{
public:
AString(const char *pSetString = NULL);
~AString();
bool operator==(const AString &pSetString);
...
protected:
char *pData;
int iDataSize;
}
Run Code Online (Sandbox Code Playgroud)
现在我想写这样的代码:
AString *myString = new AString("foo");
if (myString == "bar") {
/* and so on... */
}
Run Code Online (Sandbox Code Playgroud)
但是,现有的比较运算符仅支持
if (*myString == "bar")
Run Code Online (Sandbox Code Playgroud)
如果我省略那个星号,编译器会不高兴.
有没有一种方法,让比较操作比较*AString有const char*?
我知道有一种名为Color的宝石.我安装了它.
但对于我的生活,我无法弄清楚如何使用这个东西.
我只是想将颜色名称转换为RGB值,如果可能的话,不将整个颜色表复制到我的代码中.
我希望能够将类似red或Navy转换为三个数值.
我花了最近几天试图在我们正在开发的程序中找到内存泄漏.
首先,我尝试使用一些检漏仪.在解决了一些问题后,他们不再发现任何泄漏.但是,我也在监视我的应用程序perfmon.exe.当使用该应用程序时,性能监视器报告"私有字节"和"工作集 - 私有"正在稳步上升.对我而言,这表明程序运行的时间越长,内存越来越多.然而,内部资源似乎很稳定,所以这听起来像是泄露给我.
该程序正在运行时加载DLL.我怀疑这些泄漏或它们在该库中发生的任何泄漏,并在卸载库时被清除,因此它们不会被泄漏检测器拾取.我使用DevPartner BoundsChecker和Virtual Leak Detector来查找内存泄漏.据说两者都可以捕获DLL中的泄漏.
此外,内存消耗逐步增加,这些步骤大致但不完全一致,与我在应用程序中执行的某些GUI操作一致.如果这些是我们代码中的错误,那么每次执行操作时都会触发它们,而不是大多数时间.
每当我面对如此多的陌生感时,我就开始质疑我的基本假设.所以我转向你,谁知道一切,提出建议.我的假设有缺陷吗?您是否知道如何解决此类问题?
编辑:
我目前在Windows 7 64上使用Microsoft Visual C++(x86).
Edit2:
我刚刚使用IBM Purify来寻找泄漏.首先,它将整个程序的30%列为泄漏内存.这不可能是真的.我想它是将整个DLL识别为泄露或类似的东西.但是,如果我每隔几次操作就会搜索新的泄漏,它会报告与性能监视器报告的大小增加相对应的泄漏.这可能导致泄漏.可悲的是,我只使用Purify的试用版,因此它不会向我显示这些泄漏的实际位置.(这些泄漏仅在运行时出现.当程序退出时,任何工具都不会报告任何泄漏.)
我需要解析一些特殊的数据结构.它们有点像C格式,看起来大致如下:
Group("GroupName") {
/* C-Style comment */
Group("AnotherGroupName") {
Entry("some","variables",0,3.141);
Entry("other","variables",1,2.718);
}
Entry("linebreaks",
"allowed",
3,
1.414
);
}
Run Code Online (Sandbox Code Playgroud)
我可以想到几种方法来解决这个问题.我可以使用正则表达式"代码化"代码.我可以一次读取一个字符的代码,并使用状态机来构建我的数据结构.我可以摆脱逗号界线并逐行阅读.我可以编写一些转换脚本,将此代码转换为可执行的Python代码.
是否有一个很好的pythonic方法来解析这样的文件?
你会如何解析它?
这是关于如何解析字符串的一般问题,而不是关于这种特定文件格式的问题.
SVG是一个巨大的标准,它基于XML.我过去曾将SVG解析为XML.但是,有些事情很难.
例如,我想知道一个组的大小.据我所知,这只能通过递归地逐步遍历组中的所有子项(记录它们的所有变换)并累积它们的大小来实现.
我很想拥有一个可以为我做这样的事情的图书馆.这样的事情存在吗?
我正在使用C语言为C库编写Python包装器cffi.
必须初始化并关闭C库.另外,cffi需要一些地方来保存从中返回的状态ffi.dlopen().
我在这里可以看到两条路径:
要么把这整个有状态的业务包装在这样的类中
class wrapper(object):
def __init__(self):
self.c = ffi.dlopen("mylibrary")
self.c.initialize()
def __del__(self):
self.c.terminate()
Run Code Online (Sandbox Code Playgroud)
或者我提供两个全局函数来隐藏全局变量中的状态
def initialize():
global __library
__library = ffi.dlopen("mylibrary")
__library.initialize()
def terminate():
__library.terminate()
del __library
Run Code Online (Sandbox Code Playgroud)
第一条路径有点麻烦,因为它要求用户始终创建一个除了管理库状态之外没有其他目的的对象.另一方面,它确保terminate()每次实际调用.
第二条路径似乎导致了一些更简单的API.然而,它暴露了一些隐藏的全局状态,这可能是一件坏事.此外,如果用户忘记调用terminate(),则C库未正确卸载(这在C端不是一个大问题).
这些路径中的哪一条会更加pythonic?
我想format compact在Matlab的每次启动时自动设置一些初始变量(比如和当前目录).
我怎样才能做到这一点?
是否可以从函数内部编写GUI?
问题是所有GUI函数的回调都在全局工作空间中进行评估.但是函数具有自己的工作空间,无法访问全局工作空间中的变量.是否可以使GUI函数使用函数的工作空间?例如:
function myvar = myfunc()
myvar = true;
h_fig = figure;
% create a useless button
uicontrol( h_fig, 'style', 'pushbutton', ...
'string', 'clickme', ...
'callback', 'myvar = false' );
% wait for the button to be pressed
while myvar
pause( 0.2 );
end
close( h_fig );
disp( 'this will never be displayed' );
end
Run Code Online (Sandbox Code Playgroud)
此事件循环将无限期运行,因为回调不会myvar在函数中修改.相反,它将myvar在全局工作区中创建一个新的.
我的一个同事正在使用一个可怕的源代码编辑器,该编辑器在代码中留下奇怪的注释。在Visual Studio中,我创建了一个宏,该宏只是折叠了所有这些注释块,因此我不必看到它们。
现在我想在vim中做同样的事情。
此正则表达式匹配以下每个块:
/^.*\/\* EasyCODE.*\(\(\n.*\*\/\)\|\(\n.*\/\*.*\)\|\(\n\/\/.*\)\)*/
Run Code Online (Sandbox Code Playgroud)
现在我敢打赌,有一种非常不错的方法可以在vim中折叠此模式的所有匹配项。但是,我对vim相当陌生,不知道该怎么做。
你能帮我吗?
编辑:一些例子:
这些注释块始终以开头/* EasyCODE。有时,注释*/在第一行的结尾处有结束符,有时仅在下一行。以下各行可能包含也可能不包含其他“ /* EasyCODE...”块。
这些块之一可能看起来像这样
/* EasyCODE ) */
/* EasyCODE ( 0
some text */
/* EasyCODE F */
Run Code Online (Sandbox Code Playgroud)
或像这样
/* EasyCODE V8 */
/* EasyCODE ( 0 */
Run Code Online (Sandbox Code Playgroud)
或像这样
/* EasyCODE > */
Run Code Online (Sandbox Code Playgroud)
就像我说的,上述正则表达式抓住了所有这些。