Если стоит TEMPLATE = app, то параметр p2 и p3 передаются корректно из и в базу, а если TEMPLATE = lib, то там пустые строки. Куда копать?
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC3");
db.setDatabaseName("db");
db.setUserName("user");
db.setPassword("pass");
if(!db.open())
{
qDebug() << "Cannot open database:" << db.lastError();
return false;
}
QSqlQuery q;
q.setForwardOnly(true);
q.prepare("{:res = call test(:p1, :p2, :p3)}");
q.bindValue(":p1", 111, QSql::In);
q.bindValue(":res", 0, QSql::Out);
QString p3(127, '\0');
q.bindValue(":p3", p3, QSql::Out);
QString pad(256, ' ');
QString p2 = "текст на русском";
q.bindValue(":p2", p2, QSql::In);
bool eR = q.exec();
int ret = q.boundValue(":res").toInt();
p3 = q.boundValue(":p3").toString();