如何从midas源代码构建midas.obj

7

最近我在使用midas时发现了一个问题,并进行了修复。问题是我想使用MidasLib而不是midas.dll,但是只有源代码,我只能生成DLL。

源代码是C++的,而我对它的了解很少。我知道MidasLib.pas内部使用midas.obj,所以我需要创建静态链接midas到我的应用程序中。在C++ Builder(XE)中如何操作呢?


你最好在内存中修补代码,而不是试图重新编译。如果你能够在内存中定位到那个255,那么你只需要进行一个简单的VirtualProtect修改,就可以大功告成了。 - David Heffernan
@DavidHeffernan 是的!这确实是最好的形式,但如何找到:1- #define声明;2- 要修改的行? - Carlos B. Feitoza Filho
好的,我有源代码,也知道如何解决问题。此外,我知道如何将创建的 obj 文件用于我的 Delphi 程序,所以我只需要创建 midas.obj 文件。 - Carlos B. Feitoza Filho
抱歉...我的英语不好。我的源代码生成一个DLL(midas.dll),编译会生成多个.obj文件,但是没有一个叫做midas.obj的文件。我的意图是静态链接midas.obj,但是正确的版本(由我编译)找不到。 - Carlos B. Feitoza Filho
不管.obj文件叫什么名字,编译这些.obj文件,然后链接它们。然后解决问题。你可以把所有的代码放到一个.cpp文件中并编译它。我从未尝试过静态链接cpp。我猜这更难。我只会找到255并覆盖它。 - David Heffernan
显示剩余3条评论
1个回答

1
当您编译C++代码时,编译器会为每个.CPP/.C文件创建一个.OBJ文件,并将它们保存在计算机的某个位置。在大多数情况下,人们会运行链接器来将所有这些.OBJ文件合并到单个EXE或DLL中,但在您的情况下,您不需要这些结果。与大多数编程IDE一样,您的C++ Builder自动执行编译和链接。
如果您只想要.OBJ文件,您需要找到C++ Builder将其.OBJ文件(称为“中间输出”的项目文件夹中放置的位置,因为它是编译和链接之间的中间步骤)。因此,您必须有一个名为midas.cpp或midas.c的源文件,它会产生相应的输出文件midas.obj。

是的!这就是我一直在寻找的答案。但不幸的是,Embarcadero没有提供midas.cpp,所以这次没有midas.obj。但我遵循了David Heffernan的方法,并对原始的midas.obj进行了修补,以获得预期的行为。非常感谢。只是再解释一下:.obj文件用于C/C++中的.cpp文件,就像.dcu文件用于Delphi中的.pas文件一样 ;) - Carlos B. Feitoza Filho
这是我的修复方法(葡萄牙语),在此链接中查看:https://sites.google.com/site/carlosfeitozafilho/artigos/comoobtermensagensdeerroereconcileerrorcommaisde255caracteres - Carlos B. Feitoza Filho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接