Ошибка компоновщика в проекте Visual C ++ Windows Forms - PullRequest
2 голосов
/ 12 марта 2011

Я использую SQLAPI ++ для подключения к Oracle из моего приложения Visual C ++.Я легко могу подключиться к базе данных из VC ++, только когда я делаю это в режиме консоли Win32.

Но когда я пытаюсь сделать то же самое в Windows Forms Project, я получаю следующие ошибки компоновщика.Может ли кто-нибудь помочь мне с этим, потому что мне нужно, чтобы значения, введенные в форму, были вставлены в базу данных.

Мой код:

#include <SQLAPI.h> 
#include "stdafx.h"
#include "Form1.h"
#include <stdio.h>
using namespace sqlapi;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    SAConnection con; 
    SACommand cmd;    
    try
    {
        con.Connect("", "scott", "tiger", SA_Oracle_Client);
        cmd.setConnection(&con);
        cmd.setCommandText(
            "Create table test_tbl(fid integer, fvarchar20 varchar(20), fblob blob)");
        cmd.Execute();
        cmd.setCommandText(
            "Insert into test_tbl(fid, fvarchar20) values (1, 'Some string (1)')");
        cmd.Execute();
        con.Commit();
    }
    catch(SAException &x)
    {
        try
        {
            con.Rollback();
        }
        catch(SAException &)
        {
        }
    }
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    Application::Run(gcnew Form1());
    return 0;
}

И ошибки, которые я получаю,

sqlapi.obj : error LNK2028: unresolved token (0A000010) "public: void __clrcall SAConnection::Rollback(void)" (?Rollback@SAConnection@@$$FQAMXXZ) referenced in function __catch$?main@@$$HYMHP$01AP$AAVString@System@@@Z$0
sqlapi.obj : error LNK2028: unresolved token (0A000016) "public: void __clrcall SAConnection::Commit(void)" (?Commit@SAConnection@@$$FQAMXXZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)

sqlapi.obj : error LNK2028: unresolved token (0A000018) "public: void __clrcall SACommand::setCommandText(class SAString const &,enum SACommandType_t)" (?setCommandText@SACommand@@$$FQAMXABVSAString@@W4SACommandType_t@@@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2028: unresolved token (0A000019) "public: void __clrcall SACommand::setConnection(class SAConnection *)" (?setConnection@SACommand@@$$FQAMXPAVSAConnection@@@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001A) "public: __clrcall SAString::~SAString(void)" (??1SAString@@$$FQAM@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001B) "public: __clrcall SAString::SAString(char const *)" (??0SAString@@$$FQAM@PBD@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001C) "public: void __clrcall SAConnection::Connect(class SAString const &,class SAString const &,class SAString const &,enum SAClient_t,void (__cdecl*)(class SAConnection &,enum SAConnectionHandlerType_t))" (?Connect@SAConnection@@$$FQAMXABVSAString@@00W4SAClient_t@@P6AXAAV1@W4SAConnectionHandlerType_t@@@Z@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001D) "public: virtual __clrcall SACommand::~SACommand(void)" (??1SACommand@@$$FUAM@XZ) referenced in function __catch$?main@@$$HYMHP$01AP$AAVString@System@@@Z$0
sqlapi.obj : error LNK2028: unresolved token (0A00001E) "public: __clrcall SACommand::SACommand(void)" (??0SACommand@@$$FQAM@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2028: unresolved token (0A00001F) "public: virtual __clrcall SAConnection::~SAConnection(void)" (??1SAConnection@@$$FUAM@XZ) referenced in function __catch$?main@@$$HYMHP$01AP$AAVString@System@@@Z$0
sqlapi.obj : error LNK2028: unresolved token (0A000020) "public: __clrcall SAConnection::SAConnection(void)" (??0SAConnection@@$$FQAM@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
sqlapi.obj : error LNK2019: unresolved external symbol "public: virtual __clrcall SAConnection::~SAConnection(void)" (??1SAConnection@@$$FUAM@XZ) referenced in function __catch$?main@@$$HYMHP$01AP$AAVString@System@@@Z$0
sqlapi.obj : error LNK2019: unresolved external symbol "public: virtual __clrcall SACommand::~SACommand(void)" (??1SACommand@@$$FUAM@XZ) referenced in function __catch$?main@@$$HYMHP$01AP$AAVString@System@@@Z$0
sqlapi.obj : error LNK2019: unresolved external symbol "public: void __clrcall SAConnection::Rollback(void)" (?Rollback@SAConnection@@$$FQAMXXZ) referenced in function __catch$?main@@$$HYMHP$01AP$AAVString@System@@@Z$0
sqlapi.obj : error LNK2019: unresolved external symbol "public: void __clrcall SAConnection::Commit(void)" (?Commit@SAConnection@@$$FQAMXXZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)

Я не получаю никаких ошибок в режиме консоли Win32.Я даже добавил библиотеки в дополнительных зависимостях.

1 Ответ

1 голос
/ 12 марта 2011

Я не очень много работал с C ++ / CLI, но я думаю, что у вас возникла та же проблема, что и в ответе на этот вопрос Ошибка ссылки на библиотеки oci из vc ++ .

Я также нашел комментарий внизу этой темы http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/44fc45c4-10da-4670-bc5d-2f505ee32fd1, который подразумевает, что проекты оконных форм C ++ должны находиться в режиме / clr: pure. Я предполагаю, что это может отличаться от консольного приложения. Мне также интересно, если вы используете более позднюю версию Visual Studio, можете ли вы использовать режим / clr для оконных форм?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...