Я использую OpenVMS V8.4 в качестве сервера базы данных Oracle 10g с CXX
встроенным компилятором, а также PROC
компилятором, предоставленным оракулом.
Я написал этот пример программы C:
образец.с
#include<stdio.h>
exec sql include sqlca; // adds Oracle PLSQL library
// same as #include<sqlca.h>
main() {
printf("Hello, World!\n");
}
потом я его скомпилировал
DEVSERVER> PROC SAMPLE.C SAMPLE.PC
Команда работает, и я могу использовать встроенный компилятор CXX
:
DEVSERVER> CXX SAMPLE.PC
Команда работает без ошибок, и теперь я могу использовать встроенную команду LINK
:
DEVSERVER> LINK SAMPLE
теперь я могу запустить файл:
DEVSERVER> RUN SAMPLE
и я получаю ожидаемый результат:
Привет, мир!
Итак, все в порядке. Но моя программа пока ничего полезного не делает. Итак, давайте сначала подключимся к схеме базы данных. Я изменил SAMPLE.C
на:
#include<stdio.h>
exec sql include sqlca;
main() {
printf("Hello, World!\n");
exec sql connect scott identified by tiger;
// I skipped checking for sqlca.error since LINKer wont even allow
// me to create EXE of this file
}
Теперь я предварительно компилирую, как и раньше:
DEVSERVER> PROC SAMPLE.C SAMPLE2.PC
DEVSERVER> CXX SAMPLE2.PC
DEVSERVER> LINK SAMPLE2
и вот где я получаю эту ошибку:
%ILINK-W-NUDFSYMS, 1 undefined symbol:
%ILINK-I-UDFSYM, CX3$Z6SQLCXTPPVPJP6SQLXD384K7FP
%ILINK-W-USEUNDEF, undefined symbol CX3$Z6SQLCXTPPVPJP6SQLXD384K7FP refernced
source code name: "sqlcxt(void **, unsigned int *, sqlexd *, const sqlcxp *)"
section: .text
offset: %X0000000000000350 slot: 2
module: SAMPLE2
file: DEV$SERVER[SOURCE]SAMPLE2.OBJ;1
Та же ошибка возникает всякий раз, когда я пытаюсь выполнить любой оператор SQL в блоке exec sql
в коде.
Что я делаю не так?
LIBCLNTSH.EXE
где-то прячется.) - person HABO   schedule 10.05.2018