小编Rhe*_*eel的帖子

find_package 用于静态库而不是共享库

当使用 CMake 构建我的项目时,我希望它静态链接到库(如果可用)。现在,.dll.a无论文件是否存在,它都会查找.a文件。

例如,在一个小示例项目中链接到 libpng:

cmake_minimum_required(VERSION 3.15)
project(Test)

add_executable(Test main.cpp)

find_package(PNG REQUIRED)
message(${PNG_LIBRARIES})
target_link_libraries(Test PRIVATE ${PNG_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)

对于message,它输出

C:/msys64/mingw64/lib/libpng.dll.aC:/msys64/mingw64/lib/libz.dll.a

libpng.alibz.a文件也可以在同一目录中使用。我如何告诉 CMake 链接.a文件?

我在 Windows 10 上使用 MinGW-w64 和 msys64,但更喜欢跨平台的解决方案。

cmake static-linking

11
推荐指数
1
解决办法
1224
查看次数

是否可以在java泛型类中包含可变数量的Element类型

我想知道是否有可能有这样的事情:

public class foo<T...>
Run Code Online (Sandbox Code Playgroud)

所以你可以像上课那样打电话

Foo<Object0>
Foo<Object0, Object1>
Foo<Object0, Object1, Object2>
Run Code Online (Sandbox Code Playgroud)

使用Object 0,1和2两种不同的类型,如Integer,Float,String等.这是可能的,还是我必须为每种类型的泛型类型编写一个类?如果可以,我将如何处理不同的类型?

java generics

10
推荐指数
1
解决办法
143
查看次数

使用java将String []转换为Arraylist <String>

我想将从文件中获取的字符串转换为arraylist.我试过这种方式,但它不起作用:

import java.io.*;
import java.util.*;

public class Data
{
    static File file = DataSaver.file;
    static List<String> data = new ArrayList<String>(512);
    public static void a() throws Exception
    {
        FileInputStream fis = new FileInputStream(file);
        DataInputStream dis = new DataInputStream(fis);
        BufferedReader reader = new BufferedReader(new InputStreamReader(dis));
        if(!file.exists())
        {
            throw new IOException("Datafile not found.");
        }
        else
        {
            String[] string = reader.readLine().split("$");
            for(int i = 0; i < string.length; i++)
            {
                data.add(string[i]);
            }
        }
        dis.close();
        System.out.println(data.toString()); //for debugging purposes.
    }
}
Run Code Online (Sandbox Code Playgroud)

输出继电器: [$testdata1$testdata2$]

通缉输出: [testdata1, …

java string arraylist

3
推荐指数
1
解决办法
766
查看次数

c ++阻止std :: vector中的对象切片

我想在a中存储具有相同基类的多个类std::vector.经过一些研究,我很明显我必须使用指针来防止对象切片.但是,当我创建向量时,向其添加元素并返回它,结果向量没有正确的值.

举个例子,这是我的两个类:

class Base {
    public:
        int var0;
}

class Derived : public Base {
    public:
        int var1;
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的print功能.作为一项规则,所有实例Base应该有var0 == 23,和所有实例Derived应该有var0 != 23.

void print(Base& value) {
    if (value.var0 == 23) {
        std::cout << "Base: " << value.var0 << std::endl;
    } else {
        Derived d = (Derived&) value;
        std::cout << "Derived: " << d.var0 << ", " d.var1 << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,这确实像我想要的那样:

int main() …
Run Code Online (Sandbox Code Playgroud)

c++ vector object-slicing

2
推荐指数
1
解决办法
1679
查看次数