0

我在 OMNET ++ IDE 中运行我的简单 C++ 程序我的代码如下

**#include <stdio.h>  // for printf
#include <string.h>
#include <SQLAPI.h> // main SQLAPI++ header
//#include <asaAPI.h>


int main(int argc, char* argv[])
{
    SAConnection con;
    con.setOption( "UseAPI" ) = "DB-Library";
    con.setClient( SA_SQLServer_Client );
    try
    {

                con.Connect(
                "paper2"
                "NADRA",
                "",
                SA_SQLServer_Client);

        printf("We are connected!\n");

        // Disconnect is optional
        // autodisconnect will occur in destructor if needed
        //con.Disconnect();

        printf("We are disconnected!\n");
    }
    catch(SAException &x)
    {
        // SAConnection::Rollback()
        // can also throw an exception
        // (if a network error for example),
        // we will be ready
        try
        {
            // on error rollback changes
            //con.Rollback();
        }
        catch(SAException &)
        {
        }
        // print error message
        printf("%s\n", (const char*)x.ErrText());
    }

    return 0;
}**

我已经链接了所有文件,但我得到的错误如下

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lC:\SQLAPI\lib\sqlapi.lib
collect2.exe: error: ld returned 1 exit status

文件sqlapi.lib在同一个文件夹中,但链接器无法找到它。有人可以告诉我为什么编译器无法链接它的问题。我MINGW用作 C++ 编译器。屏幕截图附有关于链接文件的问题 在此处输入图像描述

4

1 回答 1

1

如果您使用的是-l,那么它后面应该只跟库名称,例如:

-lsqlapi

如果要指定搜索路径,则:

-lsqlapi -LC:\SQLAPI\lib\

(通常路径是在 Linux 模式下,所以 `C:/SQLAPI/lib 虽然)。

然后,如果这不起作用,您总是可以通过将库用作另一个对象来强制链接库:

C:/SQLAPI/lib/sqlapi.lib

请注意,尽管 gcc 不会链接到 Visual Studio 静态库,这sqlapi可能(因为扩展名是.liband not .a,但这可能是 a 的导出库dll)。

于 2019-01-22T13:37:00.523 回答