I love three things in the world,sun,moon,and you. sun for morning, moon for night and you forever.

0%

【背景】

C#调用C++生成的DLL,C#调用函数,接收C++返回的字符串

【C++】

1
2
3
4
5
6
7
8
static char buff[20]; //存储返回的字符串

char* testString()
{
string tmp = "hello world";
strcpy_s(buff, tmp.c_str());
return buff;
}

【C#】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//导入动态库
[DllImport("xxxx.dll", EntryPoint = "testString", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr testString();

//---------------------分割线------------------------------

//函数调用
IntPtr intPtr = testString();
string str = Marshal.PtrToStringAnsi(intPtr);
//Console.WriteLine(str);
MessageBox.Show( str );


//第二种方法 加上判断返回的字符串是否为空
IntPtr intPtr = testString();
string str = "";
str = Marshal.PtrToStringAnsi(intPtr);
if (string.IsNullOrEmpty(str))
{
MessageBox.Show("fail");
}else
{
MessageBox.Show(str);
}

以上就是我的方法,实测可以接收到字符串数据。

读《Android第一行代码》第六章第二节—文件存储

Android studio 3.0 以后找不到 Android Device Monitor,看不到程序生成的data文件

解决办法:

点击 View –> Tool Windows –> Device File Explorer【如下图所示】

1

点击即可在右下角看到 Device File Explorer,在这里找到 /data/data/com.example.filepersistencetest/files/ 目录,可以看到生成了 data 文件

2

【注意】如果看不到 files 文件夹,右击文件夹 [com.example.filepersistencetest] 刷新即可,如下图所示

点击 Synchronize 同步即可看到。

3

【背景】

将QT程序拷贝到 Debian 系统上编译时,报如下错误:

1
Unknown module(s) in QT: multimedia

从网上找到问题所在,应该是程序打开了串口或者调用了多媒体库的问题。

解决方法

1
sudo apt-get install qtmultimedia5-dev

安装完即可。

hexo g 生成静态文件的时候,在 public文件夹下面就是找不到,新写的文章就是无法生成对应的静态文件。

阅读全文 »

【背景】

现在有一台windows系统(win10)电脑,有一台linux系统(debian9)电脑,有两个需求,我在Windows下面可以访问Linux系统的文件夹,在Linux下面可以访问Windows下面的文件夹。

阅读全文 »

系统配置

​ Debian 9.3 (stretch)【armv7l GNU/Linux】

​ Qt 5.5.1 (qt-opensource-linux-x86-5.5.1.run)

阅读全文 »

1】Linux uname命令用于显示系统信息。uname可显示电脑以及操作系统的相关信息。

阅读全文 »

创建新文章

​ 根目录命令行输入hexo new <模板> <文章名> 新建文章,其中<模板>在根目录scaffolds文件夹中,默认情况下有三个模板postdraftpage

阅读全文 »