Sur*_*ler 7 c# c++ string unmanaged managed
当然,我在启动时通过回调将我的const字符串值从我的C++传递到我的C#中,但我想知道是否有一种方法可以在C++头文件中定义它们,然后我也可以在C#中引用它们.
我已经用枚举这样做,因为它们很容易.我在我的C++库项目中包含一个文件(通过顶部有一个pragma的.h文件)和我的C#应用程序(作为链接):
#if _NET
public
#endif
enum ETestData
{
First,
Second
};
Run Code Online (Sandbox Code Playgroud)
我知道它听起来很乱,但它的工作原理:)
但是......我怎么能用字符串常量做同样的事情 - 我最初认为平台之间的语法太不同了,但也许有办法呢?
使用涉及#if _NET,#define等的巧妙语法?
使用资源文件?
使用C++/CLI库?
有任何想法吗?
你可以说我很有趣,但我认为最好的方法是使用 C++/CLI 和 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"
};
Run Code Online (Sandbox Code Playgroud)
否则你可以直接使用 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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3515 次 |
| 最近记录: |