C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在非托管C dll和C#应用程序中声明常量字符串?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当然,我在启动时通过回调将我的常量字符串值从我的C传递到我的C#中,但我想知道是否有一种方法可以在C头文件中定义它们,然后我也可以在C#中引用它们.

我已经用枚举这样做,因为它们很容易.
我在我的C库项目中都包含一个文件(通过顶部有一个pragma的.h文件)和我的C#应用​​程序(作为链接):

#if _NET
public
#endif
enum ETestData
{
    First,Second
};

我知道它听起来很乱,但它的工作原理:)

但是……我怎么能用字符串常量做同样的事情 – 我最初认为平台之@L_696_7@语法太不同了,但也许有办法呢?

使用涉及#if _NET,#define等的巧妙语法?

使用资源文件

使用C/C++LI库?

有任何想法吗?

解决方法

叫我好笑,但我认为最好的方法是使用C/C++LI和C.

这使得#include相同的字符串成两个不同的上下文,让编译器发挥魔力.
这将为您提供字符串数组

// some header file
L"String1",L"String2",L"String3",// some C++ file
static wchar_t*[] String = {
#include "someheaderfile.h"
};

// in some C++/CLI file
array<String^>^ myArray = gcnew array<String^> {
#include "someheaderfile.h"
};

否则你可以直接使用C预处理器:

// in somedefineset
#define SOME_StriNG_LITERAL L"whatever"

// in some C++ file
#include "somedefineset.h"
const wchar_t *kSomeStringLiteral = SOME_StriNG_LITERAL

// in some C++/CLI file
literal String ^kSomeStringLiteral = SOME_StriNG_LITERAL;

大佬总结

以上是大佬教程为你收集整理的如何在非托管C dll和C#应用程序中声明常量字符串?全部内容,希望文章能够帮你解决如何在非托管C dll和C#应用程序中声明常量字符串?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。