GVKun编程网logo

无法链接应用程序与mudflap(无法连接应用)

14

对于无法链接应用程序与mudflap感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍无法连接应用,并为您提供关于(需要建议)从我的Android应用程序与MySQL服务器数据库对话、.NETCo

对于无法链接应用程序与mudflap感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍无法连接应用,并为您提供关于(需要建议)从我的Android应用程序与MySQL服务器数据库对话、.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门实战示例教程详解、android – 如何从Admob取消链接应用程序、Android 应用程序快捷方式不起作用出现错误“无法读取应用程序数据无法启动应用程序”的有用信息。

本文目录一览:

无法链接应用程序与mudflap(无法连接应用)

无法链接应用程序与mudflap(无法连接应用)

我的应用程序使用我的共享库。 应用程序和库必须用mudflapped来检查在堆栈和堆栈上的读写边界。 共享库成功构build,但在链接应用程序时,我有很多错误。

我做了一个简单的例子,再现这个问题。 以下是重现的步骤:

用2个文件创buildC ++dynamic共享库项目:h和cpp文件与一些类,在h或cpp文件中使用#include <iostream>

创build使用该库的C ++应用程序(使用共享库内部的类)

build立图书馆

build立应用程序(在这里你会看到一个链接错误)

这是我的文件:

SharedLibTest.h

用C ++为OSX创build共享库

什么是共享库中全局声明的非POD对象的语义?

从64位应用程序使用32位共享库?

dynamic加载时的库path?

有没有一种方法可以确定Linux上库的线程本地存储模型

#ifndef SHAREDLIBTEST_H_ #define SHAREDLIBTEST_H_ #include <iostream> class SharedLibTest { public: void func(); }; #endif /* SHAREDLIBTEST_H_ */

SharedLibTest.cpp

#include "SharedLibTest.h" void SharedLibTest::func() {}

main.cpp中

#include <SharedLibTest.h> int main(int argc,char *argv[]) { SharedLibTest obj; obj.func(); return 0; }

build立图书馆:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -fmudflap -funwind-tables -fPIC -MMD -MP -MF"SharedLibTest.d" -MT"SharedLibTest.d" -o "SharedLibTest.o" "../SharedLibTest.cpp" g++ -rdynamic -shared -o "libshared_lib.so" ./SharedLibTest.o -lmudflap

构build应用程序:

g++ -I"/home/msviridov/work/prj/workspace/shared_lib" -O0 -g3 -Wall -c -fmessage-length=0 -fmudflap -funwind-tables -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp" g++ -L"/home/msviridov/work/prj/workspace/shared_lib/Debug" -rdynamic -v -o "executable" ./main.o -lshared_lib -lmudflap

链接器错误输出是:

/home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<unsigned long>::__digits' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<long>::__min' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<short>::__min' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<char>::__max' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<short>::__max' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<long>::__max' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<int>::__max' /home/msviridov/work/prj/workspace/shared_lib/Debug/libshared_lib.so: undefined reference to `__gnu_cxx::__numeric_traits_integer<int>::__min' collect2: ld returned 1 exit status make: *** [executable] Error 1

但是,如果我删除mudflap编译器和链接器标志库的应用程序的构build将成功完成。 但是反之亦然。

我不明白是什么导致了这样的结果。 我的平台是Linux Mint 13 Maya 64位。 我会感谢任何帮助。 谢谢。

如何防止从静态链接库中导出符号?

如何在共享库(.so)中使用共享库的同一进程的实例共享全局variables?

从.so调用符号

可以(应该?)创build自己的线程的本地共享库支持退出“没有警告”的使用过程?

部署依赖于共享库的Linux应用程序的可接受方法是什么?

从头文件中删除#include <iostream> 。 如果你想包括iostream在你的源代码(SharedLibTest.cpp)文件中。

将它包含在头文件中也包含了很多垃圾,也可能导致一些这样的引用错误。 创建SharedLibTest.o而不包含和比较目标文件的大小。

您可能正在碰到bug 53359,但是您最近需要检查4.8代码。 此外,请注意,mudflap是C和非常简单的C ++程序,所以你可能会发现错误的possitives ( 错误19319 ),它不适用于DSO 。

(需要建议)从我的Android应用程序与MySQL服务器数据库对话

(需要建议)从我的Android应用程序与MySQL服务器数据库对话

我正在开始我的论文,这是一个 Android的应用程序.这个应用程序基于我创建的Web平台.

我需要建议的部分是:这是将数据从MysqL服务器提取到应用程序中的最有效方法.请给我一些建议和你对此事的经验.

(我已经阅读了关于在json中对查询进行编码的信息,但看起来似乎有很多不必要的工作)

解决方法

我建议你使用 RESTful Web Service in Java using Jersey作为Android App和MysqL服务器之间的中间层.您可以将数据以JSON(我对移动应用程序的建议),xml或palin文本传输到您的Android应用程序.

您可以在@Elad回答:Best way to access a remote database: via webservice or direct DB-access?中找到在您的系统中使用Web Service的好处

如果您决定为您的系统开发其他智能手机平台,您也只需要重复使用相同的Web服务.因此,可以将此Web服务视为系统移动用户的通用协议.

我使用Hibernate将数据映射到MysqL数据库. RESTful Service Using Jersey with Hibernate Persistence

如果您决定遵循此方法,请注意强烈建议您将泽西服务中的hibernate内容分开.您需要将DAO连接到服务层.看看@Rick Mangi写给我的是什么:REST with Java (JAX-RS) using Jersey and hibernate

在Android应用程序中使用HTTP Client也是一种很好的方法,因为它支持@ GET,@ POST,@ DELETE和@PUT命令,您可以像HTTP GET Request一样轻松地与数据库通信

.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门实战示例教程详解

.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门实战示例教程详解

注:本文首发于码友网--《.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门实战示例教程详解》

.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门示例教程详解

概述

MongoDB 是一个基于分布式文件存储的数据库,由C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储:

{
    name: "Angeladady",
    age: 18,
    hobbies: ["Steam", "Guitar"]
}

文档型的数据存储方式有几个重要好处:

  • 数据类型可以对应到语言的数据类型,如数组类型(Array)和对象类型(Object);
  • 可以嵌套,有时关系型数据库涉及几个表的操作,在MongoDB中一次就能完成,可以减少昂贵的连接花销;
  • 不对数据结构加以限制,不同的数据结构可以存储在同一张表。

开始MongoDB Atlas之旅

准备工作

在开始本文的.NET 6 + MongoDB Atlas实战之前,请先准备一个MongoDB Atlas账号以及一个Atlas集群(Sandbox集群)。

MongoDB Atlas 是一个 MongoDB 数据库即服务平台,可以为你配置和托管数据库。

MongoDB Atlas Sandbox集群允许你配置一个内存共享,存储空间为512MB的3节点的开发测试集群(免费)

申请MongoDB Atlas的免费集群请参数:MongoDB Atlas 入门教程

创建.NET Core(.NET 6)控制台应用程序

本文使用Visual Studio 2022进行示例项目开发

打开Visual Studio 2022,创建一个空白解决方案,取名为MongoDBDemo。之后,右键单击解决方案,选择添加-->新建项目,在添加新项目窗口中,选择控制台应用,如下:

之后,在配置新项目对话框中,填写项目名称(MongoDBDemo.ConsoleApp)和位置,如下:

其他信息对话框中,框架选择.NET 6.0(长期支持),如下:

点击创建,Visual Studio将自动创建项目。

安装基于.NET 6的MongoDB驱动NuGet程序包

右击MongoDBDemo.ConsoleApp依赖项-->管理NuGet程序包,如下:

在打开的NuGet包管理器的搜索框中,输入关键词MongoDB.Driver,然后选中MongoDB.Driver项目,最后点击安装以在项目中安装MongoDB的.NET驱动程序包,如下:

使用.NET Core(.NET 6)连接到MongoDB Atlas

打开Program.cs文件,现在我们使用MongoClient来建立.NET 6应用程序与MongoDB Atlas之间的连接,代码如下:

using MongoDB.Driver;

var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);
var databases = client.ListDatabaseNames().ToList();
foreach (var database in databases)
{
    Console.WriteLine(database);
}

其中,上例代码中的MONGODB_ATLAS_URL可以在MongoDB Atlas集群中获取到,如下所示:

注:不同用户的MongoDB Atlas群集地址不同,请替换成你自己的,<password>也改成你自己的MongoDB账号的对应密码。

配置好MongoDB的连接字符串后,运行MongoDBDemo.ConsoleApp控制台应用程序,如果配置正确,将得到类似如下的输出:

sample_geospatial
sample_mflix
sample_restaurants
sample_supplies
sample_training
sample_weatherdata
admin
local
这里笔者导入了一些MongoDB官方的示例数据库,所以,你运行的结果可能与本文的有所不同。

以上是.NET 6程序连接到MongoDB Atlas服务器并列出了当前集群中所有的数据库。

使用.NET Core(.NET 6)向MongoDB Atlas集群数据库中写入数据

在集群中创建一个名为demo的数据库,集合(Collection)名称为dc_user,如下图:

打开Visual Studio,在MongoDBDemo.ConsoleApp项目中创建一个命名为Models的文件夹,并在其中创建User.cs的用户类,其属性设置如下:

namespace MongoDBDemo.ConsoleApp.Models
{
    public class User
    {
        public ObjectId Id { get; set; }
        public string Name { get; set; }
        public string Password { get; set; }
        public DateTime CreatedAt { get; set; }
        public bool IsActive { get; set; }
        public int Age { get; set; }
        public long Order { get; set; }
        public string Description { get; set; }
    }
}

为了建立C#实体类与MongoDB字段之间的映射关系,需要使用MongoDB.Bson中的特性对User类的属性进行标记,如下:

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

namespace MongoDBDemo.ConsoleApp.Models
{
    public class User
    {
        [BsonElement("_id")]
        public ObjectId Id { get; set; }
        [BsonElement("name")]
        public string Name { get; set; }
        [BsonElement("password")]
        public string Password { get; set; }
        [BsonElement("created_at")]
        //[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
        public DateTime CreatedAt { get; set; }
        [BsonElement("is_active")]
        public bool IsActive { get; set; }
        [BsonElement("age")]
        public int Age { get; set; }
        [BsonElement("order")]
        public long Order { get; set; }
        [BsonElement("description")]
        public string Description { get; set; }
    }
}

以上主要使用了BsonElement特性来映射实体类与MongoDB字段之间的映射关系。

接下来,使用.NET 6的User类向MongoDB的dc_user数据库中写入数据,示例代码如下:

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);

var databases = client.ListDatabaseNames().ToList();
foreach (var database in databases)
{
    Console.WriteLine(database);
}

var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
var random = new Random();
var count = 0L;
CreateUser();

Console.ReadKey();


// 创建用户
void CreateUser()
{
    // 查询当前数据库中有多少条记录
    count = dcCollection.CountDocuments("{}");

    dcCollection.InsertOne(new User
    {
        Age = random.Next(10, 60),
        CreatedAt = DateTime.Now,
        IsActive = true,
        Name = $"Rector_{count + 1}",
        Password = "123456",
        Order = count + 1
    });
}

运行以上示例程序,再打开MongoDB Atlas面板,可以看到.NET 6程序写入的数据,如下:

.NET Core(.NET 6)查询MongoDB数据

这里,我们查询dc_user集合中的所有用户记录,示例代码如下:

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);
var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
FindAllUsers();
Console.ReadKey();

void FindAllUsers()
{
    var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {
        Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行结果如下:

总用户数:1
id:6204c4104c7002c60e09ad72,name:Rector_1,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:32

.NET Core(.NET 6)使用Update更新MongoDB数据

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);
var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
UpdateUser();
FindAllUsers();
Console.ReadKey();

void UpdateUser()
{
    var update = Builders<User>.Update.Set("age", 36);
    dcCollection.FindOneAndUpdate(x => x.Order == 1, update);
}

void FindAllUsers()
{
    var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {
        Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行结果如下:

总用户数:1
id:6204c4104c7002c60e09ad72,name:Rector_1,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:36

可以看到,用户Order=1Age已经由原来的32更新成了当前的36,说明更新操作成功。

.NET Core(.NET 6)使用Replace替换MongoDB数据

当然,MongoDB还有Replace的API,可以将集合中的数据替换成新的数据,示例如下:

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);
var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
ReplaceUser();
FindAllUsers();
Console.ReadKey();

void ReplaceUser()
{
    var item = dcCollection.Find(x => x.Order == 1).FirstOrDefault();
    if (item != null)
    {
        item.Age = 60;
        item.Name = "Rector Liu";
        item.Description = "修改(替换)";
        dcCollection.ReplaceOne(x => x.Order == 1, item, new ReplaceOptions());
    }
}

void FindAllUsers()
{
    var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {
        Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行结果如下:

总用户数:1
id:6204c4104c7002c60e09ad72,name:Rector Liu,password:123456,created_at:2022-02-10 07:51:44,is_active:True,order:1,age:60

.NET Core(.NET 6)删除MongoDB数据

.NET Core(.NET 6)删除MongoDB的数据操作如下:

using MongoDB.Driver;
using MongoDBDemo.ConsoleApp.Models;
var dbName = "demo";
var connectionString = "MONGODB_ATLAS_URL";
var client = new MongoClient(connectionString);
var dcCollection = client.GetDatabase(dbName).GetCollection<User>("dc_user");
DeleteUser();
FindAllUsers();
Console.ReadKey();

void DeleteUser()
{
    dcCollection.DeleteOne(x => x.Id == new MongoDB.Bson.ObjectId("6204c4104c7002c60e09ad72"));
}

void FindAllUsers()
{
    var count = dcCollection.CountDocuments("{}");
    Console.WriteLine($"总用户数:{count}");
    var users = dcCollection.AsQueryable().ToList();
    foreach (var user in users)
    {
        Console.WriteLine($"id:{user.Id},name:{user.Name},password:{user.Password},created_at:{user.CreatedAt},is_active:{user.IsActive},order:{user.Order},age:{user.Age}");
    }
}

运行结果如下:

总用户数:0

好了,以上即是本文为大家分享的.NET Core(.NET 6)控制台应用程序与MongoDB Atlas的入门实战示例教程,希望对你了解、学习在.NET Core(.NET 6)应用程序中如何使用MongoDB数据库有所帮助。

android – 如何从Admob取消链接应用程序

android – 如何从Admob取消链接应用程序

我开始开发 Android应用程序,我最近上传了一个应用程序到Play商店.在我的admob帐户中,我不小心创建了2个同名的应用程序.事实证明我将错误的应用程序链接到我的真实应用程序.虽然,我很确定我联系了正确的.

http://puu.sh/74RpK.png

在图片中,您可以看到第二个应用程序是上传的应用程序,第一个应用程序是测试,其中一个未链接.我的问题是,如果有一种方法可以将应用程序与admob取消链接,那么我可以正确链接它吗?
感谢阅读:D

解决方法

“确保链接正确的应用程序,因为以后无法修改它.” :/
https://support.google.com/admob/v2/answer/3034835?hl

Android 应用程序快捷方式不起作用出现错误“无法读取应用程序数据无法启动应用程序”

Android 应用程序快捷方式不起作用出现错误“无法读取应用程序数据无法启动应用程序”

如何解决Android 应用程序快捷方式不起作用出现错误“无法读取应用程序数据无法启动应用程序”?

我为我的应用创建了一个应用快捷方式。但是当我点击那个快捷方式时,它说 “读取应用数据失败无法启动应用”

我已添加

<uses-permission android:name="android.permission.INSTALL_SHORTCUT"/>

我的清单文件中的这一行,我也添加了

<Meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts"/>

我的主要意图过滤器中的这一行:-

这是我的 shortcuts.xml 文件:-

<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@drawable/ic_trackconsignment"
        android:shortcutId="tracking"
        android:shortcutShortLabel="@string/track"
        android:shortcutLongLabel="@string/track">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="in.vesolve.deliveryflyking.activities.revamp"
            android:target/>
    </shortcut>
</shortcut>

输出:- Shortcut Option
Result

我的设备:Relame 7、Android 10、Realme UI 1.0

提前致谢:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于无法链接应用程序与mudflap无法连接应用的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于(需要建议)从我的Android应用程序与MySQL服务器数据库对话、.NET Core(.NET 6)控制台应用程序与MongoDB Atlas入门实战示例教程详解、android – 如何从Admob取消链接应用程序、Android 应用程序快捷方式不起作用出现错误“无法读取应用程序数据无法启动应用程序”的相关知识,请在本站寻找。

本文标签: