Windows和Visual Studio上的OpenCobol和PostgreSQL

沃尔夫特

我目前在这支4人小队中遇到问题。

使用我在kiska网站上下载的二进制文件我能够将cobol编译为C并与之一起运行cobcrun或编译为可执行文件。但是我无法通过opencobol找到postgres命令。

这是我的cobol脚本的内容:

identification division.
program-id. pgcob.
data division.
working-storage section.
01 pgconn usage pointer.
01 pgres usage pointer.
01 resptr usage pointer.
01 resstr pic x(80) based.
01 result usage binary-long.
01 answer pic x(80).

procedure division.
    display "Before connect:" pgconn end-display
    call "PQconnectdb" using
        by reference "dbname = postgres" & x"00"
        by reference "host = 10.37.180.146" & "00"
        returning pgconn
    end-call

...

通话PQconnectdb失败module ont found : PQconnectdb

我注意到,如果我重命名libpq.dll,则错误消息将更改为can't find entry point因此,至少我确定它可以获取我的dll。

深入研究该libcob的调用方法的代码之后我发现可以使用环境变量COB_PRE_LOAD预先加载一些dll,但无法获得结果。

这是编译cobol的脚本的外观:

call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat"
set COB_CONFIG_DIR=C:\OpenCobol\config
set COB_COPY_DIR=C:\OpenCobol\Copy
set COB_LIBS=%COB_LIBS% c:\OpenCobol\libpq.lib
set COB_LIBRARY_PATH=C:\OpenCobol\bin
set COB_PRE_LOAD=C:\OpenCobol\libpq.dll
@echo on
cobc -info
cobc -free -o pgcob -L:"C:\OpenCobol" -llibpq.lib test_cobol\postgres.cob
call cobcrun pgcob

我没有发现任何遗漏,我使用的是kiska网站上的64位二进制文​​件,并使用了Visual Studio中的64位cl.exe,Postgres也是64位版本(已通过dependencyChecker检查)。

我什至尝试从Visual Studio编译生成的C,结果也一样,但是我可能会错过一些东西,因为我在C中非常烂,从不需要真正地管理DLL或使用Visual Studio。

我想念什么?

西蒙·索比斯(Simon Sobisch)

COB_PRE_LOAD不采用任何路径或扩展名,有关可用的运行时配置,请参见简短文档我猜

set COB_LIBRARY_PATH=C:\OpenCobol\bin;C:\OpenCobol
set COB_PRE_LOAD=libpq

将工作。如果未在其中放置任何其他可执行文件,则可以省略C:\ OpenCobol \ bin。

如果它不起作用(即使它起作用),我将尝试在编译时解决C函数。无论使用

CALL STATIC "PQconnectdb" using ...

或适当CALL-CONVENTION的程序,或按原样使用该程序

cobc -free -o pgcob -L"C:\OpenCobol" -llibpq -K PQconnectdb test_cobol\postgres.cob

来自cobc --help:

-K generate CALL to <entry> as static

总的来说:kiska.net的二进制文件已经过时了。我强烈建议您从官方下载站点获得更新版本,或者理想情况下从源代码上自行构建它们,请参阅有关使用VisualStudio构建GnuCOBOL文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以在Windows 10上的ARM(即华硕NovaGo)上安装和使用Visual Studio 2017?

Visual Studio 2015:在远程编译(在Raspberry上)和本地编译(在Windows上)之间切换

Windows(WSL)GCC / GDB集成上的Ubuntu上的Visual Studio Code和Bash

如何在Windows和CMake上使用Visual Studio编译Mac OS X的C ++

Windows和Visual Studio 2010上的GTK#-无法生成/调试(错误)

在 Windows 10 Visual Studio 2015 上安装 OpenCV 和 Extra 模块

在Windows 7上结合Jasmine和Visual Studio 2010运行JSCover

在 Windows 和 Mac 上使用 Visual Studio Code 工作区文件夹

Visual Studio、构建工具和 Windows SDK 之间的区别

CUDA和Theano安装Windows 7:是否需要Visual Studio?

锁定Windows 8.1时Visual Studio 2013和2015崩溃

Visual Studio 2017 和 WinJS - “Windows”命名空间的自动完成

Visual Studio 2017,Windows窗体和项目中的HTML页面

Visual Studio 2019 Locals和Autos Windows中的DateTime格式

滞后缓慢且Windows 10和Visual Studio无法响应

Linux和Windows上的Android Studio

节点和Visual Studio

如何在Windows 10上使用Visual Studio 2015 x64配置和构建Tesseract OCR C ++

如何从Windows 7计算机在Visual Studio 2015上安装和使用构建工具v120(2013)?

在工作组Windows 10平板电脑上安装Visual Studio 2013测试代理和控制器

断点无法通过Windows 10和WSL2上的Visual Studio Code调试Chrome中的React应用

哪个Windows SDK最新与Visual Studio 97和Windows 9x兼容

Windows 8.1附带了SQL Server和Visual C ++?

openshift上的keycloak和postgresql

SQL Server和Visual Studio

Visual Studio 2013和libpng

Visual Studio代码和virtualenv

Visual Studio 2013和BitBucket

SQL Server和Visual Studio