簡體   English   中英

如何為 VS2017 配置 AlgLib?

[英]How do I configure AlgLib for VS2017?

我正在編譯一個 alglib 示例程序(有一些更改):

#pragma once


# include "Source\RFLearn.h" \\appropriate header for this simple .cpp program.
# include <LinAlg.h>
# include <stdint.h>
# include <chrono> // for in-game frame clock.


int RFLearn::test_function()
{
    alglib::real_2d_array a, b, c;
    int n = 2000;
    int i, j;
    double timeneeded, flops;

    // Initialize arrays
    a.setlength(n, n);
    b.setlength(n, n);
    c.setlength(n, n);
    for (i = 0; i<n; i++)
        for (j = 0; j<n; j++)
        {
            a[i][j] = alglib::randomreal() - 0.5;
            b[i][j] = alglib::randomreal() - 0.5;
            c[i][j] = 0.0;
        }

    // Set global threading settings (applied to all ALGLIB functions);
    // default is to perform serial computations, unless parallel execution
    // is activated. Parallel execution tries to utilize all cores; this
    // behavior can be changed with alglib::setnworkers() call.
    alglib::setglobalthreading(alglib::parallel);

    // Perform matrix-matrix product.
    flops = 2 * pow((double)n, (double)3);
    auto timer_start = std::chrono::high_resolution_clock::now();
    alglib::rmatrixgemm(
        n, n, n,
        1.0,
        a, 0, 0, 0,
        b, 0, 0, 1,
        0.0,
        c, 0, 0);
    auto timer_end = std::chrono::high_resolution_clock::now();
    auto duration = timer_end - timer_start;
    timeneeded = static_cast<double>(duration.count());

    // Evaluate performance
    printf("Performance is %.1f GFLOPS\n", (double)(1.0E-9*flops / timeneeded));

    return 0;
}

我相信 linAlg 已正確鏈接(以及它的所有依賴項,尤其是 ap.h 和 ap.cpp)(Preferences->C++->AllOptions->Additional Include Directories -> aglib's source directory。更改鏈接提供了不同的一組 linker 錯誤。AlgLib 是 header 唯一庫,所以我認為我不需要編譯任何庫並將其添加到 Z3175B426046787EECE7377387340B982

編譯此代碼時出現錯誤:

1>RFLearn.obj : error LNK2001: unresolved external symbol "public: double * __thiscall alglib::real_2d_array::operator[](int)" (??Areal_2d_array@alglib@@QAEPANH@Z)
1>RFLearn.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall alglib::real_2d_array::~real_2d_array(void)" (??1real_2d_array@alglib@@UAE@XZ)
1>RFLearn.obj : error LNK2001: unresolved external symbol "public: __thiscall alglib::real_2d_array::real_2d_array(void)" (??0real_2d_array@alglib@@QAE@XZ)
1>RFLearn.obj : error LNK2001: unresolved external symbol "struct alglib::xparams const & const alglib::parallel" (?parallel@alglib@@3ABUxparams@1@B)
1>RFLearn.obj : error LNK2001: unresolved external symbol "void __cdecl alglib::rmatrixgemm(int,int,int,double,class alglib::real_2d_array const &,int,int,int,class alglib::real_2d_array const &,int,int,int,double,class alglib::real_2d_array const &,int,int,struct alglib::xparams)" (?rmatrixgemm@alglib@@YAXHHHNABVreal_2d_array@1@HHH0HHHN0HHUxparams@1@@Z)
1>RFLearn.obj : error LNK2001: unresolved external symbol "double __cdecl alglib::randomreal(void)" (?randomreal@alglib@@YANXZ)
1>RFLearn.obj : error LNK2001: unresolved external symbol "public: void __thiscall alglib::ae_matrix_wrapper::setlength(int,int)" (?setlength@ae_matrix_wrapper@alglib@@QAEXHH@Z)
1>RFLearn.obj : error LNK2001: unresolved external symbol "void __cdecl alglib::setglobalthreading(struct alglib::xparams)" (?setglobalthreading@alglib@@YAXUxparams@1@@Z)
1>RFLearn.obj : error LNK2001: unresolved external symbol "struct alglib::xparams const & const alglib::xdefault" (?xdefault@alglib@@3ABUxparams@1@B)

我直覺問題出在此處: http://www.alglib.net/translator/man/manual.cpp.html#gs_configuring

但我無法判斷它的正面或反面。 下一步是什么?

我有一個類似(不確切)的問題,只需將編譯的 cpp 文件添加到我的項目並將“包含在項目中”設置為 true,它就消失了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM