gpt4 book ai didi

c++ - 在 C++ 中创建静态库 (.a)(不适用于 iOS)

转载 作者:行者123 更新时间:2023-11-28 06:21:46 26 4
gpt4 key购买 nike

我试图在基于 OpenCV 的 C# 中为 Unity3D 制作一个 C++ 包装器,但首先我试图在 C++ 中制作一个 .a 静态库以制作包装器。(我不知道我这样做是否正确)。

但我的问题是用 Xcode 构建一个新的静态库。

(PD:我问这个问题是因为 Google 充满了“如何为 iOS 制作静态库,而这不是我要找的东西”)。

我制作:新建 -> 项目 -> Mac OSx 框架和库 -> 库(静态,STL 框架)。

然后我有两个文件:.h.cp

file1.cp:

#include <iostream>
#include "/Users/rafaelruizmunoz/Documents/OpenCV_projects/OpenCVDebug/OpenCVDebug/mylib.h"

using namespace std;
using namespace cv;

float* prueba_funcion(unsigned char* a, int cols, int rows) {
Mat mat = Mat(rows, cols, CV_8U, a);
float* o = giveMeMiddlePoints(mat); // this function gets called from the include
return o;

}

file1.h

#ifndef file1_
#define file1_

/* The classes below are exported */
#pragma GCC visibility push(default)

class file1
{
public:
float* prueba_funcion(unsigned char *, int, int);
};

#pragma GCC visibility pop
#endif

我按 Cmd + B 来构建库,并尝试创建一个新的命令行项目(用于测试),导入我的 libfile1.a 和我的标题 file1.h 在命令行项目中:

main.cpp

#include <iostream>
#include "/Users/rafaelruizmunoz/Desktop/file1.h"

using namespace std;

int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "Hello, World!\n";

unsigned char data[9] = {3,3,3,1,9,1,2,2,2};

file1 f;
float* q = f.prueba_funcion(data, 3, 3);
cout << endl << q;

return 0;
}

但是我收到链接器错误(就像我的静态库以错误的方式编译):

Undefined symbols for architecture x86_64: "file1::prueba_funcion(unsigned char*, int, int)", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

你知道我做错了什么吗?

提前致谢。问候。

最佳答案

file1.cpp 中,而不是

float* prueba_funcion(unsigned char* a, int cols, int rows)

float* file1::prueba_funcion(unsigned char* a, int cols, int rows)

否则,您定义的不是 file1 的成员函数,而是恰好具有相同名称的自由函数。

哦,您必须在 file1.cpp#include "file1.h" 以使类定义在那里已知。

关于c++ - 在 C++ 中创建静态库 (.a)(不适用于 iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29194631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com