提问人:programmer omar 提问时间:10/25/2023 最后编辑:soundflixprogrammer omar 更新时间:10/25/2023 访问量:85
链接器命令失败,退出代码为 1(使用 -v 查看调用),即使我之前使用过库,也会出现错误
Linker command failed with exit code 1 (use -v to see invocation), error appears even if I used the libraries before
问:
我在尝试开发我的第一个应用程序时遇到这些错误。请注意,第一个只是一个警告。
找不到或使用自动链接的框架“CoreAudioTypes”:找不到框架“CoreAudioTypes”
未定义的符号: 链接器命令失败,退出代码为 1(使用 -v 查看调用)
这是一个简单的应用程序,它应该扫描条形码并根据是否在数据库中找到扫描的条形码来呈现消息。数据库是静态的。
这些是程序的主要文件,谁能告诉我问题是什么?问题可能出在 ViewController 中。
// CameraView.swift
import SwiftUI
import AVFoundation
struct CameraViewController: UIViewControllerRepresentable {
typealias UIViewControllerType = ViewController
@Binding var scannedResult: String?
@Binding var showCameraView: Bool
func makeUIViewController(context: Context) -> ViewController {
let controller = ViewController()
controller.delegate = context.coordinator as? any CameraViewControllerDelegate
return controller
}
func updateUIViewController(_ uiViewController: ViewController, context: Context) {
// Update the view controller if needed
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, AVCaptureMetadataOutputObjectsDelegate {
var parent: CameraViewController
init(_ parent: CameraViewController) {
self.parent = parent
}
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
// Handle barcode scanning and update the scannedResult
if let barcodeData = metadataObjects.first as? AVMetadataMachineReadableCodeObject, let barcode = barcodeData.stringValue {
parent.scannedResult = StaticDatabase.database[barcode] ?? "Good to Use"
}
}
}
}
// QadyatyApp.swift
// Qadyaty
//
// Created by Omar Nagy on 24.10.23.
//
import SwiftUI
struct ContentView: View {
@State private var scannedResult: String?
@State private var showCameraView = false
var body: some View {
NavigationView {
ZStack {
Image("Palestine")
.resizable()
.edgesIgnoringSafeArea(.all)
VStack {
Text("قاطع فأثر صغير خير من عجز ضعيف")
.font(.system(size: 18))
.foregroundColor(.white)
.padding()
Text("افحص باركود المنتج لتعرف إن كان في قائمة")
.font(.system(size: 18))
.foregroundColor(.green)
.padding()
Text("المقاطعة")
.font(.system(size: 48))
.foregroundColor(.red)
.padding()
Spacer()
Button(action: {
// Open the camera view when the button is tapped
showCameraView = true
}) {
Text("افحص")
.font(.title)
.fontWeight(.bold)
.padding()
.background(Color.white)
.foregroundColor(.black)
.cornerRadius(20)
}
.fullScreenCover(isPresented: $showCameraView) {
CameraViewController(scannedResult: $scannedResult, showCameraView: $showCameraView)
}
Text("DEVELOPED BY OMAR NAGY")
.font(.footnote)
.foregroundColor(.white)
.padding()
}
}
.navigationBarTitle("Main Screen")
}
}
}
// ContentView.swift
// Qadyaty
//
// Created by Omar Nagy on 24.10.23.
//
import SwiftUI
import SwiftData
import UIKit
import AVFoundation
struct StaticDatabase {
static let database = [
"123456789012": "Boycott",
"9876543210": "Good to Use"
// Add more barcode-message pairs as needed
]
}
protocol CameraViewControllerDelegate: AnyObject {
func barcodeScanned(result: String)
}
class ViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate{
weak var delegate: CameraViewControllerDelegate?
let scanButton: UIButton = {
let button = UIButton()
button.setTitle("Scan", for: .normal)
button.backgroundColor = .systemBlue
button.setTitleColor(.white, for: .normal)
button.layer.cornerRadius = 10
button.translatesAutoresizingMaskIntoConstraints = false
return button
}()
let session = AVCaptureSession()
var video = AVCaptureVideoPreviewLayer()
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
setupCamera()
}
func setupUI() {
view.addSubview(scanButton)
scanButton.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
scanButton.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -50).isActive = true
scanButton.widthAnchor.constraint(equalToConstant: 200).isActive = true
scanButton.heightAnchor.constraint(equalToConstant: 50).isActive = true
scanButton.addTarget(self, action: #selector(scanButtonTapped), for: .touchUpInside)
}
@objc func scanButtonTapped() {
if session.isRunning {
session.stopRunning()
scanButton.setTitle("Scan", for: .normal)
} else {
session.startRunning()
scanButton.setTitle("Stop", for: .normal)
}
}
func setupCamera() {
guard let device = AVCaptureDevice.default(for: .video) else {
return
}
do {
let input = try AVCaptureDeviceInput(device: device)
session.addInput(input)
} catch {
print(error)
}
let output = AVCaptureMetadataOutput()
session.addOutput(output)
output.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)
output.metadataObjectTypes = [AVMetadataObject.ObjectType.ean13]
video = AVCaptureVideoPreviewLayer(session: session)
video.frame = view.layer.bounds
view.layer.addSublayer(video)
}
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
// Handle barcode scanning and communicate the result through the delegate
if let barcodeData = metadataObjects.first as? AVMetadataMachineReadableCodeObject, let barcode = barcodeData.stringValue {
let result = StaticDatabase.database[barcode] ?? "Good to Use"
delegate?.barcodeScanned(result: result)
}
}
func checkBarcode(_ barcode: String) {
// Simulate a product database check
let database = ["123456789012": "Boycott"]
if let result = database[barcode] {
showAlert(title: "Result", message: result)
} else {
showAlert(title: "Result", message: "Good to Use")
}
}
func showAlert(title: String, message: String) {
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
present(alertController, animated: true, completion: nil)
}
}
答: 暂无答案
上一个:比较 c 程序中的两个总和
下一个:如何应用LUT滤镜?
评论