C++/CLR Sqlite初探
error C2491: "acosh": 不允许 dllimport 函数 的定义
asinh": 不允许 dllimport 函数 的定义
atanh": 不允许 dllimport 函数 的定义
isblank": dll 链接不一致
先跑到http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki这个地址去下了个源码,准备编译一波,但是很悲剧的,从来没有下下来的代码能直接编译的,一个sln塞了好几个C#项目,还有两个VC项目,于是生成解决方案,没啥好说的,果断各种报错,为了避免后人掉坑,重现下错误
.
这上面只有5个错误,但是第一次下下来的错误并不止这么些,其中有一个就是缺少ADO.dll,我于是再次跑到上面那个链接去下了x86 (net4.5)的安装包,安装之后不包这个错误,只剩下了逗比的5个错误,这5个错误让我好一阵蛋疼
群里问人没人能解答,搜索了半天也没找到类型情况.唔,为了增加这篇文章被搜索到的可能(于是再文章的最前面贴了详细的错误信息),其实解决办法很简单,这些逗比函数其实都是与库函数重定义了,但是你又不能去改源代码,跳到错误的地方一看,恩,是用宏来控制着函数的定义的
于是怒之加上HAVE_ASINH等宏,把这些函数等于差不多去掉了,至于宏加载哪里吗,肯定是VC的编译选项
那个_isblank也是同理,不过由于是链接错误,也没法跳到错误的地方,尝试着搜索_isblank没有找到,对着源文件找了半天,突然想起,这逗比名字是混淆过的,最终找到,加了个HAVE_XXXX之类的宏,总算编译完成的,要是不编译怎么破,程序坐等崩溃
另外就是C++/CLR的问题,由于某个地方得用数组了,搞了半天不行,array用了半天也没用会,搞了半天还是要加个^,这个就不提了,搞得我人崩溃,还有就是SQL语句的优化问题,(结合.NET)网上的代码果然不靠谱,代码的接口到是符合人的习惯,基本都能写对,比如参数绑定,在C/C++蛋疼的搞法,到时到了.NET,简化好多,我第一次写的倒是蛮好的,可是自己不相信自己,用记事本打开存储后的db文件.以为自己操作失败了,在网上抄了一个超渣的列子….,网上那些写代码的不看文档的?
引用下文档优化前和 优化后的代码
前:
using (SQLiteCommand mycommand = new SQLiteCommand(myconnection))
{
int n;
for (n = 0; n < 100000; n ++)
{
mycommand.CommandText = String.Format("INSERT INTO [MyTable] ([MyId]) VALUES({0})", n + 1);
mycommand.ExecuteNonQuery();
}
}
后:
using (SQLiteTransaction mytransaction = myconnection.BeginTransaction())
{
using (SQLiteCommand mycommand = new SQLiteCommand(myconnection))
{
SQLiteParameter myparam = new SQLiteParameter();
int n;
mycommand.CommandText = "INSERT INTO [MyTable] ([MyId]) VALUES(?)";
mycommand.Parameters.Add(myparam);
for (n = 0; n < 100000; n ++)
{
myparam.Value = n + 1;
mycommand.ExecuteNonQuery();
}
}
mytransaction.Commit();
}
既然是初探,这文章写到这里就可以收工了,还有C++/CLR 基本上用托管类型,你只能XXX^ 然后gcnew,这个我也蛋疼了半天,因为一开始写
"" + int这样能赋值给TextLabel.text.但是sting()+string就不行,顿时就傻逼了,折腾了半天^简直就是个逗比指针,不过当然不是指针咯,当指针来用就好了
去求,完蛋玩意,还有这东西效率貌似有点低,就这样了吧~
C++/CLR Sqlite初探的更多相关文章
- FireDAC的SQLite初探
// uses FireDAC.VCLUI.Wait 之后, 可不用添加 TFDGUIxWaitCursor TFDConnection // 数据连接 TFDQuery ...
- 【转载】保哥 釐清 CLR、.NET、C#、Visual Studio、ASP.NET 各版本之間的關係
我常常不仅仅逛 博客园,还会去找国外,特别是台湾的技术部落格,发现好的文章,我便会收录,今天我转载或者全文复制,在Google 博客园,一位叫保哥, 釐清 CLR..NET.C#.Visual Stu ...
- React Native初探
前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...
- Unity3D游戏开发初探—3.初步了解U3D物理引擎
一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...
- EntityFramework 7.0之初探【基于VS 2015】(十)
前言 本篇作为EF 7.0的开篇也是Entity Framework目前系列末篇,因为关于EF 7.0学习资料实在是太少,我都是参考老外的资料花费了不少时间去研究去尝试同时也失败多次,个人觉得那是值得 ...
- 【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...
开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合 ...
- CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)
由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5 名词定义 下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解 ...
- WCF初探-10:WCF客户端调用服务
创建WCF 服务客户端应用程序需要执行下列步骤: 获取服务终结点的服务协定.绑定以及地址信息 使用该信息创建 WCF 客户端 调用操作 关闭该 WCF 客户端对象 WCF客户端调用服务存在以下特点: ...
- SQLite入门与分析(七)---浅谈SQLite的虚拟机
写在前面:虚拟机技术在现在是一个非常热的技术,它的历史也很悠久.最早的虚拟机可追溯到IBM的VM/370,到上个世纪90年代,在计算机程序设计语言领域又出现一件革命性的事情——Java语言的出现,它与 ...
随机推荐
- EasyMock(官方资料整理)
1.要求 EasyMock要求java1.5.0及以上版本. Objenesis (2.0+)必须在classpath中来执行class mocking. 2.使用Maven 在Maven中心库中可以 ...
- Java Client for Google Cloud Storage
关于Google Cloud Storage Google Cloud Storage有益于大文件的存储与服务(serve).此外,Cloud Storage提供了对访问控制列表(ACLs)的使用,提 ...
- 定位程序问题的方法 -- clwu
原本的标题的<定位程序代码的方法>,但问题有时候超出了自己代码的范围,而是别人的程序,所以今天想分享的是一个通用的分析问题(程序)的思路. 先来说一下在使用别人的程序(Vim)过程中遇到问 ...
- mount失败
又一次遇到mount失败,提示文件系统类型错误.选项错误.有坏超级块等.之前是在ubuntu 14.04 lts desktop上挂载windows下共享文件夹遇到的.这次具体的环境如下:CentOS ...
- Spark计算工作流
下图 中描述了 Spark 的输入.运行转换.输出.在运行转换中通过算子对 RDD进行转换.算子是 RDD 中定义的函数,可以对 RDD 中的数据进行转换和操作. 输入:在 Spark 程序运行中, ...
- iOS WebServiceFramework网络服务框架浅解
网络服务几乎是每一款成功APP的必备条件,打开你手机你会发现里面不用联网的应用数量十只手指可以数出来,就算是一些以独特技术切入市场的APP如美颜相机,都至少加入了分享功能.下面我先做下简单的回顾兼扫盲 ...
- sping配置文件中引入properties文件方式
<!-- 用于引入 jdbc有配置文件参数 可以使用PropertyPlaceholderConfigurer 或者PropertyOverrideConfigurer --> <b ...
- LoadRunner显示中文乱码的问题
lr_convert_string_encoding Converts a string to a different encoding. Return Values:This function re ...
- Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor (链表)
题目链接:http://codeforces.com/contest/670/problem/E 给你n长度的括号字符,m个操作,光标初始位置是p,'D'操作表示删除当前光标所在的字符对应的括号字符以 ...
- 剑指OFFER之重建二叉树(九度OJ1385)
题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7 ...