C++ 将libpng与Borland C+链接+;

C++ 将libpng与Borland C+链接+;,c++,windows,libpng,borland-c++,C++,Windows,Libpng,Borland C++,我在MacOSX上使用动态链接制作了一个程序。我现在正在尝试将其移植到Windows。每当我试图在Borland编译和链接我的移植程序时,它都会给我这个错误,还有大约10个相同的错误,但使用不同的“\u png\u create\u read\u struct”: 错误:来自C:\PROGRAMMING\PNGTEST.OBJ的未解析外部“\u png\u create\u read\u struct”引用 我假设这是因为我没有正确地设置Borland C++ 5.5.1的LIPPNG。我已经将

我在MacOSX上使用动态链接制作了一个程序。我现在正在尝试将其移植到Windows。每当我试图在Borland编译和链接我的移植程序时,它都会给我这个错误,还有大约10个相同的错误,但使用不同的“\u png\u create\u read\u struct”:

错误:来自C:\PROGRAMMING\PNGTEST.OBJ的未解析外部“\u png\u create\u read\u struct”引用

我假设这是因为我没有正确地设置Borland C++ 5.5.1的LIPPNG。我已经将png.h和pngconf.h放入C:\Borland\BCC55\include的include文件夹中,并将libpng12.dll.a、libpng13.a、libpng13.dll.a、libpng.a、libpng12.def、libpng.def、libpng12.la和libpng.la放入C:\Borland\BCC55\Lib(可能不需要它们,但作为noob,我不知道哪些是需要的,哪些不是)

我是否也需要在其中放入libpng.obj文件?如果是这样,我如何制作/获得一个?我曾尝试使用makefile.bc32来设置libpng,但这给了我一个缺少分隔符的错误

以下是我的命令行选项:

bcc32 -tW pngtest.cpp -lpng

我在代码中包括png.h。我做错了什么?或者有没有更好的方法来加载不需要libpng的alpha图像,或者有更好的编译器用于Windows?

使用MinGW编译器可能比Borland更好。Borland不再得到很好的支持

您还可以下载DevC++并查看它的插件机制中是否有libpng包。 DevC++是一个使用MinGW C/C++编译器的IDE

也就是说,如果你觉得你必须使用密件抄送,你要么 a) 使用Borland构建libpng。如果你打算使用borland,这是最好的解决方案。 b) 我认为,可以使用Impdef从libpng.dll创建导入库。您将在borland bin目录中找到impdef.exe或imp(something).exe。
请注意,有些库不能与impdef一起使用,因为存在链接到dll的静态代码,导致dll在没有正确运行时的情况下失败。

首先,我不会用第三方库“污染”BC55安装;这将使将项目转移到其他构建环境变得更加困难。最好将它们放在项目中的文件夹中

其次,您知道您试图链接的导出库是为BC55构建的吗?.a扩展名表示GNU库(Borland库通常使用.lib扩展名),在这种情况下,它不会与使用不同对象文件格式的BC55链接。如果是这种情况,您将需要按照您尝试的方式重建库,因此我建议您真的应该问一个关于您在这样做时遇到的问题的问题。我想知道makefile是为Borland make还是GNU make编写的,因为它们有不同的语法


命令行选项
-lpng
对于GCC可能是正确的(它将链接libpng.a),但是对于BCC来说没有意义。
-l
仅将后面的文本传递给链接器。需要传递完整的名称,如果没有提供扩展名,则隐式添加.lib。

您可能应该使用coff2omf转换库。DLL文件几乎肯定是“Microsoft”格式


看到了。

哈哈,谢谢,我真的不知道这些东西的大部分。但是-tW的东西实际上使它成为了我的windows gui程序。当我使用相同的命令行编译其他东西时,它们只会变成扩展名为.exe的cpp文件名。我想我会继续尝试与borland构建libpng,非常感谢您注意到-lpng的事情。关于
-tW
,我误解了选项文档中“指定目标可执行文件”的含义。(我现在已经修复了帖子中的错误链接,但还是在这里)。好吧,让我们看看这是否有效,否则我将使用MinGW。谢谢如果你要否决投票,至少有礼貌地说一声为什么。@Mayerz:我记得在我的Borland时代它是impdef.exe,但是。。。我老了,我的记忆可能会出错哈哈,好的!别担心,我还年轻,一切都一样