小编Tom*_*omO的帖子

更改HTML导出到Word的边距

实际出口没问题:

Response.Clear();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/msword";
Response.AddHeader("Pragma", "public");
Response.AddHeader("Expires", "0");
Response.AddHeader("Content-Type", "application/word");
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName));
Response.Charset = "utf-8";
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
mainbody.RenderControl(hw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如何更改生成的单词doc的边距?

如果我打开下载的word doc然后保存为HTML,则定义边距的指令是:

@page WordSection1
{
  size:8.5in 11.0in;
  margin:1.0in 1.0in 1.0in 1.0in;
  mso-header-margin:.5in;
  mso-footer-margin:.5in;
  mso-paper-source:0;
}    
Run Code Online (Sandbox Code Playgroud)

我想知道如何在响应头中更改它,以便我可以在一张纸上正确输出表单.有任何想法吗?

html export ms-word margin

7
推荐指数
1
解决办法
9333
查看次数

未解决的外部符号

可能重复:
什么是未定义的引用/未解析的外部符号错误,如何解决?

我正在努力将大量的.h和.lib文件从本机C++包装到托管C++,最终用作C#中引用的.dll.

我已经链接了.lib文件,到目前为止一切顺利.在包装最新的.h文件时,当遇到链接错误的2个函数时,我遇到了麻烦:

error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function
"public: void __thiscall Field::setCharacter(unsigned char,int)"
(?setCharacter@Field@@QAEXEH@Z) myutils.lib 
Run Code Online (Sandbox Code Playgroud)

myutils.lib在链接器选项中引用了,所以这不应该是问题.

奇怪的是,我在这个特定的.h文件中有大约20个函数,除了3个函数之外,所有其余函数都很好.

有任何想法吗?

c++ linker unresolved-external

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

从C++回调到C#函数的访问冲突异常/崩溃

所以我有一个我正在使用的本地第三方C++代码库(.lib和.hpp文件),我曾经在C++/CLI中构建一个包装器,以便最终在C#中使用.

从调试模式切换到发布模式时,我遇到了一个特殊问题,因为当回调代码返回时,我遇到了一个访问冲突异常.

来自原始hpp文件的代码用于回调函数格式:

typedef int (*CallbackFunction) (void *inst, const void *data);
Run Code Online (Sandbox Code Playgroud)

来自C++/CLI Wrapper的代码用于回调函数格式:(我将解释为什么我暂时宣布两个)

public delegate int ManagedCallbackFunction (IntPtr oInst, const IntPtr oData);
public delegate int UnManagedCallbackFunction (void* inst, const void* data);
Run Code Online (Sandbox Code Playgroud)

- 很快,我宣布第二个"UnManagedCallbackFunction"的原因是我试图在包装器中创建一个"中间"回调,因此链从Native C++> C#更改为Native C++> C++/CLI Wrapper> C#的版本...完全公开,问题仍然存在,它刚刚被推送到C++/CLI Wrapper现在在同一行(返回).

最后,来自C#的崩溃代码:

public static int hReceiveLogEvent(IntPtr pInstance, IntPtr pData)
    {
        Console.WriteLine("in hReceiveLogEvent...");
        Console.WriteLine("pInstance: {0}", pInstance);
        Console.WriteLine("pData: {0}", pData);

        // provide object context for static member function
        helloworld hw = (helloworld)GCHandle.FromIntPtr(pInstance).Target;
        if (hw == null || pData == null)
        {
            Console.WriteLine("hReceiveLogEvent: received …
Run Code Online (Sandbox Code Playgroud)

c# c++ c++-cli callback access-violation

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

在 C++/CLI 中 void* 到 Object^

我正在将大量 .h 和 .lib 文件从本机 C++ 包装到托管 C++,以最终用作 C# 中的引用 .dll。

一些本机 C++ 函数的返回类型为 void*。当我将值传递回调用代码时,我不确定如何处理这个问题。例如:如果 C# 应用程序调用我的 dll 包装器,我从本机调用返回什么:

void* start(ThreadFunc,void *, unsigned *);
Run Code Online (Sandbox Code Playgroud)

我目前正试图在一个通用的 System::Object^ 中装箱返回,但没有运气。这是包装器中的调用:

m_NativeThread->start(cb, 
        GCHandle::ToIntPtr(GCHandle::Alloc(o)).ToPointer(),
        static_cast<unsigned int*>(GCHandle::ToIntPtr(GCHandle::Alloc(u)).ToPointer())));
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供解决方案吗?

c++-cli wrapper void-pointers

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