我有一个名为exe的exe test.exe
,它通常用作独立的应用程序.我想在另一个应用程序app.exe中使用此exe作为模块(dll).
test.exe中的代码做了一些非常简单的事情:
void doTest()
{
MyClass *inst = new MyClass();
inst->someMethod();
}
Run Code Online (Sandbox Code Playgroud)
someMethod()
虚拟和MyClass 在哪里有虚拟的.
doTest()
从test.exe导出,因此创建了一个名为test.lib的lib,app.exe
与此lib链接,以便在启动时静态加载test.exe.
当我运行test.exe独立运行时它运行得很好但是当我运行它从app.exe中加载它崩溃了.
使用调试器进入代码后发现崩溃是在对虚方法的调用中.事实证明,vftable不知何故变坏了.
经过一些调查后发现,当MyClass的构造函数中的代码正在运行时,vftable是一回事,但是当new
返回它的调用被替换为其他名为"local vftable"的东西时.我发现了这个模糊的讨论,为什么会这样.
经过大约一天的调试后,我发现这个"本地vftable"中的指针在两种情况下是相同的,当test.exe是独立的并且当它作为模块加载时.这可能是正确的,因为test.exe被加载到不同的地址...
为了测试这个理论,我将链接器选项中的加载地址更改为当app.exe在app.exe中时加载test.exe的地址一切顺利,瞧,一切正常.
显然,这不是一个永久的解决方案,因为下次这个随机选择的地址可能会被占用,同样的问题会再次出现.
所以我的问题:为什么这个"本地vftable"绑定到exe的静态加载地址?将exe作为模块加载是一件坏事吗?为什么exe假设它被加载到它的静态地址?
仅供上下文使用:这一切都是通过MSVC 2008,Windows XP x64完成的.
我有一个表'CompanyID int not null'的表,其默认值设置为10.现在我想编写一个查询,将此默认值更改为1.我怎么能这样做?
任何帮助将不胜感激.我正在使用SQL Server 2000.
我们想要构建一个应用程序,我们也希望显示动态内容的翻译版本.翻译的内容将由我们上传(因此我们不需要任何翻译逻辑).
我想知道除了内置的i18n之外是否还有其他宝石需要考虑?i18n似乎最适合静态数据,但不处理动态数据.
我正在制作一个程序,使用Wininet系列API在Windows上从Internet下载一个简单的文件,因为我想利用它与IE兼容的代理行为.众所周知,目前的IE有几个代理设置:自动检测(WPAD),自动配置(PAC),手动单URL,每个协议的代理服务器,袜子,直接,...对于大多数用户,"直接下载" 工作良好; 但对于某些用户(特别是那些在防火墙/ NAT后面的用户),他们在建立连接时总是需要特殊的代理设置.
编写代码来处理所有这些情况是很痛苦的,所以我希望WinINET InternetOpen (INTERNET_OPEN_TYPE_PRECONFIG)
可以帮助我.它适用于大多数用户,但我仍然发现一些用户抱怨连接失败.这些用户可能具有非常特殊的网络环境(例如,需要用户名/密码auth代理)并且直接连接不适用于他们.
有时虚拟用户配置错误,我想让wininet为我尝试"全部"可能的代理设置; 遗憾的是,INTERNET_OPEN_TYPE_PRECONFIG
只会尝试用户配置的那个,而不是"每个可能的代理设置".
所以我的问题是,如何使一个程序具有最强大的能力来解决虚拟用户的所有http连接(特别是代理配置)(即,他们不了解如何配置他们的系统)?是否有任何建议的方式来建立HTTP连接而无需处理代理内容?(即,"超级"连接解算器将尝试所有可能的代理设置),或者是否有任何方法告诉WinINET启用其所有代理设置来创建连接?
我正在寻找关于"如何以模块化方式设计应用程序"的指针,建议,链接,警告,想法甚至是轶事.我将在这个项目中使用python,但建议不一定要引用这种语言,尽管我只愿意实现基于OOP的设计.
这里有一些背景知道我来自哪里以及我想要实现的目标......
我的项目将是一个小型应用程序,它将使用Web服务并以各种方式显示结果,包括:
该应用程序将作为免费(语音)软件发布,因此我想让其他开发人员很容易编写插件/模块,这些插件/模块将扩展主应用程序的功能,而无需更改核心代码.
此时,插件本质上应该允许开发人员通过定义提供者,数据操作(如果有的话)以及将数据呈现给用户的方式来激活新的web服务.
我在使用drupal开发方面有丰富的经验,drupal具有强大的模块化方法,但也遵循非面向对象的设计,所以我怀疑对于python,drupal设计可能不是最佳解决方案.
如果这是至关重要的 - 核心将为GNU/Linux本地开发.
提前谢谢您的时间!
以下问题是关于选择完全匹配(例如:INT)与与varchar"LIKE"匹配之间的速度.
有什么区别吗?我问这个的主要原因是因为我试图决定是否将ID从我当前的项目中删除.
例如,而不是:
http://mysite.com/article/391239/this-is-an-entry
Run Code Online (Sandbox Code Playgroud)
改成:
http://mysite.com/article/this-is-an-entry
Run Code Online (Sandbox Code Playgroud)
从长远来看,你认为我会遇到任何性能问题吗?我应该保留身份证吗?
注意:
我会使用LIKE让用户更容易记住.例如,如果他们写" http://mysite.com/article/this-is-an ",它将重定向到正确的.
关于页数,让我说我大约79,230和应用程序.正在快速增长.就像我们每天说1640个条目一样
我在使用SWF-ToolStrip处理内存泄漏时遇到了麻烦。据此http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=115600#已解决。但是这里似乎没有。
有人知道如何解决这个问题吗?
再次,学习者在这里.
一般来说,我希望能够查看应用程序的整个状态,以了解我在当前范围内可以获得的信息.
我做了很多事情就是打开QuickWatch并进行评估this
,它给了我当前课程中的所有内容.
我想知道是否有任何其他关键字我可以用来获得类似的东西,这将允许我询问应用程序状态的其他部分.比如,有没有办法看到另一个类里面的值?是否存在"全球"范围?
希望你能提供帮助,并希望我没有太模糊,因为我还在学习在C#环境中使用的正确术语.
在此先感谢您的帮助 :)
干杯
伊恩
我的PC上安装了"SQL Server Compact 3.5 Service Pack 1"和"SQL Server Management Studio 2008"(SSMS).过去,我可以从SSMS中"连接到服务器"对话框的"服务器类型"列表中选择"SQL Server Compact Edition".此条目现在丢失,我无法恢复它.