小编nch*_*che的帖子

依赖于C++/CLI的任何CPU依赖于本机C dll(c ++/cli的任何cpu)

这是我的问题.我在C#中包装一个C dll.为此,我首先编写了一个C++/CLI包装器.本机C库链接到C++/CLI包装器.(C++/cli项目中的链接器属性).

以下是它现在的组织方式: - 本机C .lib:x86和64bit.

  • 1解决方案包含2个项目:
    • C++/CLI包装器项目,链接到本机C .lib
    • C#项目引用C++/CLI项目

我的问题来自于我需要C#来定位"任何CPU".但是此选项在C++/CLI中不可用,因为它直接编译为本机代码.

我想解决这个问题的方法是: - 在x86中编译C++/CLI包装器,然后更改配置并编译为64位.当它编译时,我想告诉它基于平台采取哪个dll.即:如果在64位编译,链接64位本机C dll,否则如果x86,链接x86本机C. - 完成后,我应该能够在我的C#平台中拥有任何CPU目标.在这里,我将不再引用我的C++/CLI包装器项目,而是基于目标平台引用所需的dll.

我的问题是:

  • 如何告诉C++/CLI项目哪个.lib基于目标平台链接到哪个?
  • 如何告诉C#项目基于目标平台引用哪个C++/CLI dll?

让我补充一点,C#项目是一个由x86或x64客户端使用的CLASS LIBRARY.

我希望我的问题很清楚.任何帮助将不胜感激!

UPDATE基于:.NET项目中的条件引用,有可能摆脱警告吗?...

所以现在我使用条件编辑我的.csproj文件来引用dll,如下所示:

<ItemGroup>
    <Reference Include="AlibCppWrapper, Version=1.0.4303.21410, Culture=neutral, PublicKeyToken=c0c17a53adc44091, processorArchitecture=AMD64"
               Condition="$(Platform) == 'x64'">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\x64\Debug\AlibCppWrapper.dll</HintPath>
    </Reference>
    <Reference Include="AlibCppWrapper, Version=1.0.4303.21410, Culture=neutral, PublicKeyToken=c0c17a53adc44091, processorArchitecture=x86"
               Condition="$(Platform) == 'x86'">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\Debug\AlibCppWrapper.dll</HintPath>
    </Reference>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为$(平台)设置为AnyCPU ...

c c# 64-bit x86 c++-cli

17
推荐指数
1
解决办法
1万
查看次数

checklistbox怎么没有数据源?如何绑定到值列表?

我正在开发Winform,我需要一个checkedlistbox.我将值存储在具有List属性的对象中:

public static class Fields
{
    public static IList<string> FieldList { get; set; }

    static Fields()
    { ...//populate FieldList }
}
Run Code Online (Sandbox Code Playgroud)

现在我希望我的CheckedListBox使用Fields.FieldList作为数据源.在线搜索后,我发现我需要设置

//in myForm_Load
mycheckedListBox.DataSource = Fields.FieldList;
Run Code Online (Sandbox Code Playgroud)

但myCheckedListBox没有DataSource属性.

我在这里错过了什么吗?

c# checkedlistbox winforms

14
推荐指数
1
解决办法
3万
查看次数

使用C#winforms应用程序中的文本框过滤树视图

我在C#winform中有一个TreeView.我希望能够通过搜索框添加搜索功能.基本上当用户输入字母时(我猜_TextChanged事件),我只显示包含带有输入字母的子节点的节点...

我的TreeView包含53个父节点,总共超过15000个节点,因此我需要一些高性能的东西.我从一个csv构建我的TreeView,我将其加载到DataTable中,然后进行查询以获取具有关联子节点的Parent节点...

UPDATE

我有个主意.最终目标是当用户双击子节点时,它会被添加到listView中.

我首先在一个简单的列表视图中实现了这个搜索功能,我没有将我的数据分成几类.

我的想法是,一旦用户开始输入内容,我就会关闭我的树视图并显示列表视图......

我会尝试并实施,看看它给出了明智的表现......任何关于这个想法的评论家都是受欢迎的.

c# treeview filter winforms

11
推荐指数
1
解决办法
2万
查看次数

在wordpress网站git上的合作.如何共享数据库?

我和一位同事开始在wordpress网站上工作.我们都在本地机器上开发网站,并拥有独立的数据库.我们通过Git分享我们的工作.现在的问题是我发现wordpress使用数据库来存储关于主题和插件的一些配置.

我们如何共享我们的数据库以始终拥有相同的版本?

database git wordpress

6
推荐指数
1
解决办法
3241
查看次数

适用于移动应用的Web应用的架构是什么?

我有一个在Apache Wicket(Java EE MVC框架)下运行的Web应用程序.现在它是一个网站.我正在考虑用于构建移动应用程序的架构.移动应用程序将简单地呈现信息并接收用户输入(例如配置文件配置).

我有一个N层架构,其中:

  • DB与当前webapp使用的DB相同.
  • 构建一个业务逻辑层,它将是一个Web服务,它从数据库中公开我需要的所有信息,并处理用户输入.这是服务器端.
  • 一种Web服务,它询问业务逻辑层并通过XML或JSON公开信息
  • UI层基本上是我的移动应用程序(iOS,Android,...).这些通过Web服务将查询发送到业务层.查询返回要显示的数据或发送UI信息.

我当时认为Web服务层可以为网站和移动应用程序提供服务.

这种架构有意义吗?如果是的话,我的上一个建议是否已经破坏了MVC结构?

architecture mobile n-tier-architecture

6
推荐指数
1
解决办法
2031
查看次数

C++/CLI或C#P/Invoke用于大型C库,调用extern函数

现在我知道有很多关于这方面的问题,但一般来说它们都是指c ++库.

我有一个相当重要的C dll(大约2800个函数),我需要在C#中为大约70个这些可调用函数创建一个API.我开始使用P/Invoke,但它非常繁琐,因为我有复杂的结构来传递和返回C代码(带有指针的结构,双指针等),它花了我很多时间来得到我需要的东西.

现在我根本不了解C++/CLI,但我对C++有一些经验(尽管不是很多).

我想知道是否值得努力为我的项目学习这个.使用C++包装器是否可以让我不必为编组结构而烦恼,在全局堆中分配指针等等?

非常感谢这个伟大的社区

c dll pinvoke c++-cli

4
推荐指数
1
解决办法
684
查看次数

使用宏查找C中的数组大小

我很难理解这个宏是否应该做到了.它是在第三方dll我包装.

#ifdef __cplusplus
#define NULL    0
#else
#define NULL    ((void *)0)
#endif
#define GTO_ARG_SIZE(arg) (long)((arg)==NULL ? 0 : (long)(arg)[0])
Run Code Online (Sandbox Code Playgroud)

它应该给出arg的长度,其中arg在我的情况下是长*.它只是指向一个很长但是当arg是一个longs数组时也会使用Macro ...

根据我的理解,如果指针不为NULL,它将返回arg [0]的值.但是当arg指向long时,它返回long的值,而不是arg(1)的大小......

解决:

像你们许多人所说的那样,神秘的结构包含它的大小作为第一个元素.抱歉,我没有关于dll的文档,所以我只是在挖掘了一些代码之后才想出来.我一开始想知道我是否真的对C/C++知之甚少.谢谢大家

c c-preprocessor

2
推荐指数
1
解决办法
5206
查看次数

根据键值对设置组合框的选择项.

我有一个组合框,我这样填充:

this.reqTypeInput.Items.Add(new RequestType("Label 1", "Value1"));
this.reqTypeInput.Items.Add(new RequestType("Label 2", "value2"));
this.reqTypeInput.Items.Add(new RequestType("Label 3", "value3"));
Run Code Online (Sandbox Code Playgroud)

我的RequestType类是:

class RequestType
{
    public string Text { get; set; }
    public string Value { get; set; }

    public RequestType(string text, string val)
    {
        Text = text;
        Value = val;
    }

    public override string ToString()
    {
        return Text;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个值,例如"Value1".如何将组合框的selectedItem设置为对象{Label 1,Value1}?

我试过了:

this.reqTypeInput.SelectedIndex = this.reqTypeInput.Items.IndexOf("Value1");
Run Code Online (Sandbox Code Playgroud)

c# combobox winforms

0
推荐指数
1
解决办法
8295
查看次数